列を並べ替えてテキストファイルを操作する最も簡単な方法

列を並べ替えてテキストファイルを操作する最も簡単な方法

私は学校で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

関連情報