2つの列を抽出して、すでに列でいっぱいの別のファイルの特定の場所に追加したいファイルがあります。
catファイル1を変数として作成し、catファイル2を変数として作成し、変数をエクスポートしてawkと組み合わせることができますか?以前は、誰かがこのようにして1行のテキストを書くのに役立ちましたが、ファイル全体で機能するかどうかはわかりません。
例:
入力ファイル1
Group F3D0 F3D1 F3D9 F3D
Otu01 1627 1935 8335 241
入力ファイル2
oi1 oi2
lk8 po8
結果ファイル
oi1 oi2 Group F3D0 F3D1 F3D9 F3D
lk8 po8 Otu01 1627 1935 8335 241
答え1
見せたら本当に必要なのは
paste -d ' ' file2 file1
最初の2つの列、2番目の列、残り、最後に最初の列を出力するなど、順番に、いくつかのシェルプロセスの置き換えを使用して、必要なほとんどすべての操作を実行cut
できます。paste
file1
file2
file1
file2
paste -d ' ' <(cut -d ' ' -f 1,2 file1) <(cut -d ' ' -f 2 file2) <(cut -d ' ' -f 3- file1) <(cut -d ' ' -f 1 file2)
あるいは、(おそらくより効率的かもしれません)、2つのファイルをそのまま貼り付けて結果をパイプして、特定の順序awk
で特定の列を選択することもできます。
paste -d ' ' file1 file2 | awk '{print $1, $2, $NF, $3, $4, $5, $(NF-1)}'
または(必要に応じて)perl
paste -d ' ' file1 file2 |
perl -alne 'print join " ", @F[0,1],@F[6],@F[2..4],@F[5]'