以下のtxtファイルの3番目の列の内容をカスタムテキストに置き換えようとしています。つまり、GCM
下の3番目の列の内容の代わりです。Example1
、、Example2
...、などのカスタムテキストが必要ですExampleN
。これらの代替文字列は他のテキストファイルから提供されます。
odu-encryption-2/1/5/odu4-1 enabled GCM ^M^M
odu-encryption-2/1/6/odu4-1 enabled GCM ^M^M
odu-encryption-2/1/7/odu4-1 enabled GCM ^M^M
odu-encryption-2/3/1/odu4-1/odu2e-1 enabled GCM ^M^M
ファイルはスペースで区切られます。最後の列は^M^M
ルータの標準出力です。
予想出力 -
odu-encryption-2/1/5/odu4-1 enabled John1 ^M^M
odu-encryption-2/1/6/odu4-1 enabled Mike2 ^M^M
odu-encryption-2/1/7/odu4-1 enabled Tom33 ^M^M
odu-encryption-2/3/1/odu4-1/odu2e-1 enabled WolfN ^M^M
Bashでこれを行う方法を知っている人はいますか?sed '3s/$/ Ccustom text/' testing.txt
3行目をカスタムテキストに置き換えることができるかどうかを調べるためにを使用してみましたが、その中の既存のテキストが変わりました。
答え1
他のファイルに次のように1行に1つの文字列がある場合:
$ cat file2
John1
Mike2
Tom33
WolfN
見つかった順序で追加するには、次の手順を実行します。
$ awk 'NR == FNR{a[NR]=$1;next}; {$(NF-1)=a[FNR]; }1' file2 file1
odu-encryption-2/1/5/odu4-1 enabled John1 ^M^M
odu-encryption-2/1/6/odu4-1 enabled Mike2 ^M^M
odu-encryption-2/1/7/odu4-1 enabled Tom33 ^M^M
odu-encryption-2/3/1/odu4-1/odu2e-1 enabled WolfN ^M^M
ただし、これは連続したスペースを縮小します。これが問題なら、次のようにすることができます。
$ cat file1 | perl -lape 'BEGIN{open($fh,"file2"); while(<$fh>){chomp; $a[$.]=$_}} s/$F[2]/$a[$.]/ '
odu-encryption-2/1/5/odu4-1 enabled John1 ^M^M
odu-encryption-2/1/6/odu4-1 enabled Mike2 ^M^M
odu-encryption-2/1/7/odu4-1 enabled Tom33 ^M^M
odu-encryption-2/3/1/odu4-1/odu2e-1 enabled WolfN ^M^M