パターンとそれに続く内容を把握し、残りを削除してください。

パターンとそれに続く内容を把握し、残りを削除してください。

特定のキーワードとその内容を特定するのに問題があります。これはサンプルファイルであり、実際のファイルはこれより大きいです。

はい

user@linux:~$ cat url.txt 
abcrandomtextdef another random text blablabla
another random iwantthis text abcrandomtextdef url=https://www.google.com ghirandomtextjkl
ghirandomtextjkl another random text yadayada
wxyz iwantthis abcdef url=yahoo.com yaday
user@linux:~$ 

希望の出力は次のとおりです。

iwantthis url=https://www.google.com
iwantthis url=yahoo.com

これはその結果を得るための私の試みですが、見てわかるように実際には機能しません。

user@linux:~$ grep url= url.txt | cut -d ' ' -f3,6
iwantthis url=https://www.google.com
abcdef
user@linux:~$ 

ベストアンサー1

sed正しい仕事のようです。

% sed -n 's/.* \(iwantthis\) .* \(url=[^ ]*\) .*/\1 \2/p' url.txt
iwantthis url=https://www.google.com
iwantthis url=yahoo.com

動作原理:

-n- "p"コマンドと一致する行のみを印刷します。

s/.../p - 検索と置換、一致する行の印刷

.* \(iwantthis\) .* \(url=[^ ]*\) .* - 空白で囲まれた「iwantthis」という単語を見つけて覚え、空白ではなく単語が後に続く「url =」も見つけて覚えます。.*"iwantthis" 前の内容と両端の URL の後ろの内容は削除されます。

/\1 \2- 覚えている2つの単語に置き換えてください。

おすすめ記事