カットを使用して与えられたパターンの後に続く単語を見つける方法は?

カットを使用して与えられたパターンの後に続く単語を見つける方法は?

次のファイルがあります。

-config1
-config2 param2
-config3 param3a param3b
-config4 param4

以下を使用して抽出できますparam2

echo $(<file) | cut -d' ' -f3

しかし、私はいつも次の単語を取得できるように修正して、 -config2これらの単語が並べ替えられているか何かが挿入されたときに私のコマンドが機能し続けたいと思います。何を見るべきですか?

説明:特定の行に複数のパラメーターがある可能性があります(またはまったくない場合があります)、-config常に1行に最大1つのオプションがあります。

答え1

私はこれにawkを使用します

awk '/^-config2/ {print $2}' file

で始まる行の2番目の引数を印刷します-config2^行の始まりを示します。

答え2

この試み:

perl -ne 'if (/-config2\s*(.*)/) { print "$1\n"; }'

これは一致する行を見つけ、その-config2行の残りの部分を印刷します(\s*スペースの量に一致し、(.*) 何でも一致してバインドします$1)。

私の以前の答えは、その後-config2に単語が続くと仮定しています。

perl -ne 'if (/-config2\s*(\S+)/) { print "$1\n"; }'

これは一致する行を見つけ、-config2その後の最初のトークンを印刷します(\s*空白の量と一致し、(\S+)空白以外の文字の空でないシーケンスと一致し、それにバインドされます$1)。

答え3

sedの変形:

sed -n 's/^-config2 //p' file

-n自動印刷抑制

s/^-config2 //-config2パターン空間で何でも開始する行の置換と末尾のスペース

p印刷パターンスペース

関連情報