特定の文字を含む行をコピーして新しいファイルに貼り付けます。

特定の文字を含む行をコピーして新しいファイルに貼り付けます。

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

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

関連情報