サーバーのURLを含むテキストファイルがあります。たとえば、次のようになります。
request get https://abc.net/search?q=hello/world/hello/word/search=5&size=10
request get https://abc.net/search?q=hello/world/hello/world/hello/word=5
このテキストファイルでは、文字列 "search?q="の後のテキストを別のファイルである出力ファイルに保存したいと思います。
hello/world/hello/word/search=5&size=10
hello/world/hello/word/hello/world=5
hello1world1/hello/world/hello/word
ベストアンサー1
sed -n '/search?q=/{s/.*search?q=//;p;}' infile > outfile
説明する:
/search?q=/
この正規表現を含む行にのみ適用できる次のコマンドセット(中括弧)を作成します。
s/.*search?q=//
最初の部分を2番目の部分(空)に置き換えます。
その後、p
ラインを印刷します。
この-n
フラグはデフォルトでこの行の印刷を無効にします。
実際、次のように単純化できます。
sed -n '/.*search?q=/{s///;p;}' infile > outfile
コマンドに入力したパターンをs/
空白のままにすると、最後に使用したパターンが再利用されるためです。
編集:コメントの簡略化を指摘したRobertLに感謝します。
sed -n 's/.*search?q=//p' infile > outfile
これは、置換が行われたときにのみその行を印刷するためにコマンドp
のフラグを使用します。s