以下のようにtxtファイル(input.txt)があります。
A_Karitiana-4.DG Ignore_Karitiana(discovery).DG
A_French-4.DG Ignore_French(discovery).DG
A_Dinka-4.DG Dinka.DG
A_Dai-5.DG Dai.DG
S_Dai-2.DG Dai.DG
B_Dai-4.DG Dai.DG
S_Dai-3.DG Dai.DG
S_Dai-1.DG Dai.DG
input.txtの最初の列のみを含む新しいtxtファイル(output.txt)を作成する必要があります。したがって、output.txtは次のようになります。
A_Karitiana-4.DG
A_French-4.DG
A_Dinka-4.DG
A_Dai-5.DG
S_Dai-2.DG
B_Dai-4.DG
S_Dai-3.DG
S_Dai-1.DG
私は次のコマンドを試しました。
awk '$1' input.txt > output.txt
これ:
awk -F' ' '$1' input.txt > output.txt
しかし、それらはすべてinput.txtと同じように見えるoutput.txtファイルを生成します。
区切り記号の問題のようですが、解決策がわかりません。
ベストアンサー1
印刷しません。努力する
awk '{print $1}' input.txt > output.txt
(試した方法で)式を指定すると、awk
デフォルトと少し似て動作しますgrep
。一致する行はすべて正確に印刷されます。
awk '/regexp/' file.txt
- 正規表現に一致する行を印刷します。awk 'NR==3' file.txt
- 3行印刷awk '1' file.txt
- 1 が真のすべての行を印刷します。それがすべてです(わかりました、これはぎこちない猫ですが、私たちはあなたがやっていることに近づいています)。awk '$1' file.txt
–$1
true と評価されるすべての行を印刷します。つまり、空ではありません(falseと評価されません(例: "0"))。つまり、ファイルが与えられたらすべての行を印刷します($1
これは常に数値ではなく空でない文字列を含むため)。