例: これがファイルにあるとします。
AB: Test CD: Testing EF: Rest
CDを検索し、「テスト」を変数に保存するスクリプトが必要です。いくつか試してみましたが、awk
なんだか進歩はありません。
答え1
grep
Perl スタイルの正規表現を使用すると、今後戻ることができます。
variable_a=`grep -Po '(?<=CD: )[^ ]+' file.txt`
Bashで言う:
- 名前付き変数を作成し、逆引用
variable_a
符内のコマンドで生成された値を割り当てます。 grep
Perl正規表現()を使用し、行()の一致部分-P
のみを返す必要があります。-o
[^ ]
パターンは、「CD:」の後に空白以外の文字()が1つ以上続く必要があります。- "file.txt"でパターンを検索してください。
答え2
公開された入力/出力の例が可能なすべてのユースケースを網羅するとします。
すべてのsedの場合:
$ var=$(sed -n 's/.*CD: \([^ ]*\).*/\1/p' file)
$ echo "$var"
Testing
いくつかの奇妙な場合:
$ var=$(awk 'sub(/.*CD: /,""){sub(/ .*/,""); print}' file)
$ echo "$var"
Testing