File1の列をFile2のファイルと交換します。

File1の列をFile2のファイルと交換します。

2つのファイルがあります。最初のファイルには11個の列があります。たとえば、次のようになります。

1 2 3 4 5 6 7 8 9 10 11

2番目の項目には10個の列があります。

11 22 33 44 55 66 77 88 99 100

私がやりたいことは、file1を見て、列7が14から15の間の値である場合、file1の列9をfile2の列9の値に置き換えることです。したがって、上記の例では、file1は次のように書き換えられます。

1 2 3 4 5 6 7 8 99 10 11

列が特定の値の間にあることを確認するのは簡単です。

 awk '$7 < 15 && $7 >= 14

しかし、file1の列9をfile2の値に置き換えるのに問題があります。 file1 は 1 つだけ減らす必要はありません。行数に制限はなく、値が14から15の間のすべてのインスタンスで9列を置き換える必要があります。値が14未満または15より大きい場合、列はそのままにしてください。私はこれが難しいとは思わないが、運がなかった。どんな助けでも大変感謝します。よろしくお願いします!

ベストアンサー1

9番目のフィールドの値を使用するには、1行だけを使用してください。file2

awk 'NR==1{a=$9}FNR==NR{next}14<=$7&&$7<15{$9=a}1' file2 file1

おすすめ記事