複数列のテキストファイルを処理して別の複数列のテキストファイルを取得するにはどうすればよいですか?



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'infile

awk

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