Sed
如何使用 sed 列印包含雜湊(或任何替代解決方案)的字元串的一部分?
我正在嘗試使用 sed 在一行中列印出一個特定的字元串。
第一個問題是我在查找包含斜杠的字元串時遇到了一些困難,我已經嘗試了其他執行緒中提供的一些解決方案但沒有成功,希望有人可以幫助我。
我有一個名為 output.log 的文件。
一條線的一個例子是:
013-11-08 19:45:52 evtlog.bad PROD/INSE/6004113 2012-11-08 19:04:06 /test11/golf/TierTwo/2013-11/evtlog.log
因此,使用 sed 我只想從該行中列印出以下字元串:
/test11/golf/TierTwo/2013-11/evtlog.log
我想在這一行中找到字元串:“golf/TierTwo/2013-11”
所以我會使案例如:
sed 'golf/TierTwo/2013-11' output.log
並獲得以下輸出:
/test11/golf/TierTwo/2013-11/evtlog.log
我怎樣才能做到這一點?
如果有更好的解決方案而不是 sed,也將受到歡迎。我的目標是在腳本中使用它,無論是 bash 還是 perl
如果您
grep
支持-o
or--only-matching
標誌,您可以 grep 字元串,由任何連續的非空白字元包圍grep -o '[^[:blank:]]*golf/TierTwo/2013-11[^[:blank:]]*' output.log /test11/golf/TierTwo/2013-11/evtlog.log
或(如果它支持 perl 風格的
\S
類)grep -Eo '\S*golf/TierTwo/2013-11\S*' output.log /test11/golf/TierTwo/2013-11/evtlog.log
使用
awk
代替 sed:awk 'index($0,"golf/TierTwo/2013-11")>0 { print $7 }' output.log
這將搜尋每行中的字元串,如果找到索引,將列印第 7 個單詞。