私は2つのテキストファイルを持っています。 「A.TXT」は1つのtxtファイルから別のtxtファイルに値を追加するときにawkでスペースを削除しますか?
A 1 AB ... 1 5 -3 4.5 (contains 11 columns. So "4.5" is in the 11th column)
A 2 BC ... -2 3 8 9.2
A 3 WE ... 2 3 8 5.2
A 4 RT ... 23 2 24 4.1
...
END
を含む「B.TXTは」最終2列は「A.TXT」とは異なることを除いて同様です。もう一つの違いは、 "B.txt"には "A.txt"にないいくつかの追加の行が含まれていることです。例えば、第3ラインA 3 QEW ... 5 23 34 5
は私がやりたいことA.TXT」の各行の最後の列の値を抽出している「A.TXT」
A 1 AB ... 1 5 4 9
A 2 BC ... -2 3 1 0
A 3 QEW ... 5 23 34 5
A 4 WE ... 2 3 -7 56
A 5 RT ... 23 2 -5 14
...
END
「B.TXT」にあるがありません"B.txt"の対応する行に追加します。 "A.txt"にない "B.txt"の各行について、3番目の列要素が文字 "Q"(例えばQEW)で始まり、それ以外の場合は値2を追加する場合は値1を追加したい。だから、出力が
A 1 AB ... 1 5 4 9 4.5
A 2 BC ... -2 3 1 0 9.2
A 3 QEW ... 5 23 34 5 1
A 4 WE ... 2 3 -7 56 5.2
A 5 RT ... 23 2 -5 14 4.1
...
END
のようになります。以下awk
コマンドが動作します:
NR==FNR{
arr[$3] = $11
next
}
{
if ($3 in arr){
print($0, arr[$3])
}else if ($3 == "^Q"){
print($0, "2")
}else{
print($0, "1")
}
}
は唯一の問題は私が手出力が
A 1 AB ... 1 5 4 9
4.5
A 2 BC ... -2 3 1 0
9.2
A 3 QEW ... 5 23 34 5
1
A 4 WE ... 2 3 -7 56
5.2
A 5 RT ... 23 2 -5 14
4.1
...
END
であるということである
awk -f script.awk f1 f2
と蘭
最後の列の値をそのような新しい行に入力する必要があるので間違っています。これをどうすれば解決できますか?私がリストしたものの代わりに私が使うことができる別のコマンドがありますか?
私はこれを試しても、私は元の質問で言及した改行の問題をまだ受けています – user5739619
試しdos2unix? – karakfa