次のファイルがあります。
Cx 100 350
C 110 320
Cn 300 250
Cb 200 280
Cx 300 210
Bashスクリプトを使用して、「Cx」と「Cn」の文字を含む特定の行を選択して新しいファイルに貼り付ける方法についてアドバイスを受けたいと思います。
答え1
使用grep
:
grep '^C[nx]' file >newfile
これにより、次の行が選択されます。スタート文字列を使用するCn
か、Cx
この行をnewfile
。
Cxx
たとえば、またはで始まる行を選択しますCn!
。
使用awk
:
awk '$1 == "Cn" || $1 == "Cx"' file >newfile
正規表現一致ではなく文字列比較が実行されます。空白で区切られた最初の列がCn
あるか、Cx
他の内容がない行のみを通過します。
答え2
perl -MList::MoreUtils=any -lane '
print if any { $F[0] eq $_ } qw/Cx Cn/;
' input.txt
複数の値から最初の真実ステートメントを選択するルーチンにアクセスするには、List::MoreUtils モジュールをロードします。確認する最初のフィールドを追加/変更したい場合は、提供されているソリューションを拡張できます。
上記のモジュールが見つからない場合は、次のコードを使用できます。
perl -lane 'for my $e ( qw/Cx Cn/ ) { print,last if $F[0] eq $e }' input.txt