既存の列に単語を追加する方法

既存の列に単語を追加する方法

10列のタブで区切られたファイルがあり、列の1つ(約4000万行あり)に各行の既存の項目の前に単語を追加し(各行に同じ単語!)、1つを追加したいと思います。;入場後。

たとえば、最初の2行は

1 2 3 4 5 6 7 8 text still more text in this column 10
1 2 3 4 5 6 7 8 text2 still more text in this column 10

到着

1 2 3 4 5 6 7 8 test=text; still more text in this column 10
1 2 3 4 5 6 7 8 test=text2; still more text in this column 10

最終的にこれはExcelの基本的な「接続」機能ですが、このような大きなファイルにはExcelを使用できず、とにかくLinuxに移動する必要があります。

フォーラムで接続の問題を調査しましたが、2つの文字列をマージすることに関するトピックのみが見つかりました。

foo="Hello"
foo="$foo World"
echo $foo  

ただし、変数を使用しないでください。

ベストアンサー1

これが正しいawk良いこと:

awk -F'\t' -vOFS='\t' '{ $9 = "test=" $9 ";" }1'

-F'\t'タブで区切られたフィールドを使用するように指示します。-vOFS='\t'出力にもタブ文字を使用するように指示します。実際の本体は最後のパラメータです。各行が(9番目のフィールド)の値を$9「test =」、元の値、および「;」の連結に変更すると言う小さなプログラムです。他のすべてのフィールドは変更せずに残し、最後に何かをしても新しい行を印刷するように1指示します。awk

私が入力(タグの挿入)を提供すると、次のようになります。

$ cat data
1   2   3   4   5   6   7   8   text    still more text in this column 10
1   2   3   4   5   6   7   8   text2   still more text in this column 10

その後、上記のコマンドを実行できます。

$ awk -F'\t' -vOFS='\t' '{ $9="test=" $9 ";" }1' < data
1   2   3   4   5   6   7   8   test=text;  still more text in this column 10
1   2   3   4   5   6   7   8   test=text2; still more text in this column 10

希望の出力を取得します。リダイレクトを使用してファイルに保存できます>

$ awk -F'\t' -vOFS='\t' '{ $9="test=" $9 ";" }1' < data > processed-data

おすすめ記事