Sed

如何使用 sed 列印包含雜湊(或任何替代解決方案)的字元串的一部分?

  • September 20, 2016

我正在嘗試使用 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支持-oor--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 個單詞。

引用自:https://unix.stackexchange.com/questions/311018