複数列のテキストファイルを処理して別の複数列のテキストファイルを取得するにはどうすればよいですか?
How Process Multi Column Text File Get Another Multi Column Text File
解決:
各フィールドを1行に配置し、列を作成します。
1行の各フィールド
NS
tr -s '' ' n' グリップ grep -o '[[:alnum:]] *' infileと
sed's / s + / n / g'infile以上のポータブル:
sed's / s + / / g'infileawk
awk '$ 1 = $ 1'OFS =' n'infileまた
awk -v OFS = ' n' '$ 1 = $ 1'infile桁
ペースト
2列の場合:
... |貼り付け----3列の場合:
... |貼り付け----NS。
と
2列の場合:
... |しかし、「N」 s / n / t / g '3列の場合:
... |しかし、「N」 NS; s / n / t / g 'NS。
xargs
... | xargs-n必要な列の数NSxargsは/ bin / echoを印刷します。オプションのように見えるデータは、エコーはそのように解釈されます。
awk
... | awk '{printf'%s '、$ 0(NR%n == 0?ORS:OFS)}' n =必要な列の数OFS = ' t'pr
... | pr -at-number-of-desired-columnsまた
... | pr -at -s $ ' t'-desired-columnsの数列(autogenパッケージから)
... |列-c必要な列の数典型的な出力:
a aa aaa b bb bbb c cc ccc d dd ddd e ee eee f ff fff g gg ggg h hh hhh i ii iii j jj jjj
ワイルドカードが指摘しているように、これは、シェルがグロブとして解釈する特別な文字がなく、デフォルトの単語分割ルールに満足しているという点で、ファイルが適切にフォーマットされている場合にのみ機能します。ファイルがそのテストに「合格」するかどうかについて疑問がある場合は、このアプローチを使用しないでください。
1つの可能性は使用することですprintfのように
printf '%s t%s n' $(cat your_file)それはの内容で単語分割を行いますyour_fileをペアにして、タブを挟んで印刷します。あなたはもっと使うことができます%s形式の文字列printfに追加の列を追加します。
$ sed -E's / s + / n / g'ip.txt |貼り付け---- a aa aaa b bb bbb c cc ccc d dd ddd e ee eee f ff fff g gg ggg h hh hhh i ii iii j jj jjj $ sed -E's / s + / n / g'ip .txt |貼り付け------ a aa aaa b bb bbb c cc ccc d dd ddd e ee eee f ff fff g gg ggg h hh hhh i ii iii j jj jjj