ファイルの最初の列を最後の列に移動

ファイルの最初の列を最後の列に移動

ファイルの最初の列をファイルの最後の列に移動しようとしています。これは私が持っているものです。

awk -F ',' '{first = $1; $1=""; OFS = FS; print $0, first}' file.txt

この方法は、ファイルに1行しかない場合に機能します。ファイルに複数の行がある場合、何もしません。ファイルにキャリッジリターンと改行文字(CRLF)があります。

ベストアンサー1

複数文字RSにGNU awkを使用する:

$ printf 'foo,bar,etc\r\n' |
awk 'BEGIN{RS=ORS="\r\n"; FS=OFS=","} {$(NF+1)=$1; sub("[^"FS"]*"FS,"")} 1'
bar,etc,foo

または awk を使用してください。

$ printf 'foo,bar,etc\r\n' |
awk 'BEGIN{ORS="\r\n"; FS=OFS=","} {sub(/\r$/,""); $(NF+1)=$1; sub("[^"FS"]*"FS,"")} 1'
bar,etc,foo

おすすめ記事