私は学校でLinuxを勉強しており、現在テキストファイルを処理しています。途中であちこちでいくつかの近道を学ぶことを願っています。現在、次の内容を含むテキストファイルがあります。
First Last 111 E. Road New York NY
First2 Last2 222 w. Road Newark NJ
タブ区切りではなく、列とコンマで区切って並べ替えるスクリプトを作成する必要があります。私がしたことは、各フィールドを切り取り、独自のtmpfileに入れてから、次のように貼り付けることだけです。
paste tmplast tmpfirst tmpstate tmpaddress | tr '\t' ',' > finished
すべてをtmpファイルに切り取り、一緒に貼り付けるよりも高速な方法はありますか?私はLinuxに最初に触れ、ファイル操作のために学んだ唯一のコマンドtr
はとですsed
。
答え1
awk
次のことができます。
awk 'BEGIN {FS="\t"; OFS=","} {print $2, $1, $5, $3, $4}' file
FSおよびOFSは、「(入力)フィールド区切り記号」および「出力フィールド区切り記号」を指定し、記号を使用してフィールドが印刷される順序を明示的に指定できます$
。 (一時ファイルは必要ありません。)
出力:
Last,First,NY,111 E. Road,New York
Last2,First2,NJ,222 w. Road,Newark