我有一個命令將列印出三行:
1-foo-1
1-bar-1
1-baz-1
我想將此結果作為命令的一部分包含在內,在該命令中我搜索包含字串“bar”的行,然后將整行包含為命令的一部分,如下所示:
vi 1-bar-1
我想知道 bash awk 和/或 grep 組合將用于獲得這個。謝謝你。
我嘗試了以下方法,但我得到了整個輸出。例如,我有一個包含以下內容的檔案 rows.txt:
1-foo-1
1-bar-1
1-baz-1
然后我會跑,結果當我在尋找 just 時echo $(cat rows.txt | awk /^1-baz.*$/)會得到結果。謝謝你。1-foo-1 1-bar-1 1-baz-11-baz-1
uj5u.com熱心網友回復:
vi $(echo -e "1-foo-1\n1-bar-1\n1-baz-1\n" | grep bar | awk -F'-' '{print $2}')
上面的腳本等于vi bar
PS
echo -e "1-foo-1\n1-bar-1\n1-baz-1\n"是一個模擬命令輸出的演示。
PS
您更新了問題...現在您的目標變為:
我正在尋找 1-baz-1。
那么,解決方案就是
cat rows.txt | grep baz
uj5u.com熱心網友回復:
我搜索包含字串 "bar" 的行:
一種天真的方法是只使用
vi $(grep -F bar rows.txt)
但是,您必須記住以下幾點:
如果您的檔案包含幾行bar,請說
1-bar-1
2-bar-2
編輯器將打開這兩個檔案。這可能是也可能不是你想要的。
要考慮的另一點:如果您的檔案包含一行
1-foobar-1
這也會被選中。如果您不希望發生這種情況,請使用
vi $(grep -Fw bar rows.txt)
該-w選項要求模式必須由字邊界分隔。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/515844.html
標籤:重击awkgrep
