私は次のawk
コマンドを使用して、最初の2つの列をfile_a
から選択し、file_b
に出力します。awkは空白行を残す
awk '{print $1"\t"$2}' file_a > file_b
はタブで区切られており、空白の行がいくつかあります。上記のコマンドを実行すると、空白行は\ t \ nとして出力され、そのまま\ nにしておきます。 awk
コマンドで何を変更する必要がありますか?
私は次のawk
コマンドを使用して、最初の2つの列をfile_a
から選択し、file_b
に出力します。awkは空白行を残す
awk '{print $1"\t"$2}' file_a > file_b
はタブで区切られており、空白の行がいくつかあります。上記のコマンドを実行すると、空白行は\ t \ nとして出力され、そのまま\ nにしておきます。 awk
コマンドで何を変更する必要がありますか?
awk '{print (NF ? $1"\t"$2 : $0)}' file_a > file_b
は少し短い
awk 'BEGIN{FS=OFS="\t"} {if(NF) print $1,$2; else print}' file
または
awk 'BEGIN{FS=OFS="\t"} NF{print $1,$2; next}1' file
を試してみてください。
awk '/^$/;/./{print $1"\t"$2}' file_a > file_b
しかし、これは時に第一又は第二の柱のような特殊なケースでは動作しません。空であるか、列データにスペースが含まれています。正しく表形式のデータを処理するためには、このコマンドを使用します。
awk -F"\t" '/^$/;/./{print $1"\t"$2}' file_a > file_b
@EdMorton確かに想像しました。空行(^ $)に余分な、望ましくないタブがあります。このコマンドは、空の行をそのまま残します。列が1つしかない行があるかどうかについては何も言及していません(「最初の2つを選択する」とは、2つ以上あることを意味します)。 – steffen
@エドモトンマン、これは純粋な仮定です。あなたはどちらも正確ではありません:私のように、あなたは列のスペースを期待していない、それは動作しません!さらに厳しい:空(空白)の第1列または第2列を期待しないでください。それは動作しません!漠然とした質問に対する不正確な答えです。申し訳ありませんが、私はあなたのコメントは適切だとは思わない。とにかく。私の編集を参照してください。とにかく@EdMorton – steffen
私は最初の解決策を編集して、1行にゼロのタブがあるようにしました(それは今でも短くなっています:-P)。もう1つは追加されました。 – steffen
を私は自分自身を誇りに感じる:私はほとんど同じ溶液:)それがない – fedorqui