可能重複:
extract regexp result from string and write it to a variable如何使用grep來提取子字符串?
這裏是我的命令:
的grep -E「\ * [[:空間:]] + FIN [[:空間:]] +([^)] +?)')myfile
它輸出:
- FIN(SUCCESS)
而且我想它只是輸出:
成功
我怎麼能告訴grep
辦呢?
可能重複:
extract regexp result from string and write it to a variable如何使用grep來提取子字符串?
這裏是我的命令:
的grep -E「\ * [[:空間:]] + FIN [[:空間:]] +([^)] +?)')myfile
它輸出:
- FIN(SUCCESS)
而且我想它只是輸出:
成功
我怎麼能告訴grep
辦呢?
您可以將grep命令的輸出傳遞給awk命令。
grep -E '*[[:space:]]+FIN[[:space:]]+([^)]+?)') myfile | awk '{print $2}'
我不確定如何單獨使用grep來做到這一點,因爲它並不是真的爲特定的用例量身定做的。既然你是在一個grep平臺上,那麼當你有一個命令解決問題的一部分時,使用管道是你的優勢,另一個命令則是另一個命令的另一部分。
grep
不能輸出單個捕獲組,但您可以使用sed
做到這一點,而不是:
sed 's/\*[[:space:]]\+FIN[[:space:]]\+(\([^)]\+\))/\1/g' file
如果使用ack,那麼你可以使用匹配團體和--output
開關:
ack '\*\s+FIN\((.+?)\)' --output='$1' myfile
用普通的'grep',你不行。如果你有這個(有點具有挑戰性)或者切換到'sed'或'awk'或Perl或Python,那麼使用grep -P。 – tripleee