0

入力ファイル

A B C D;X;Y 0
C D E F;Z;X 1

出力ファイル

A B C D;X;Y;0
C D E F;Z;X;1

input_file の最後の列を最後から 2 番目の列とマージし、最後の列の値を「;」で区切りたいと思います。最後から 2 番目の列 (input_file の列番号 4 と同様)。したがって、output_file の列が 1 つ少なくなります。grepを使用できるように各行に明確なパターンはありませんが、「while read line」を使用できますが、各行の最後の列エントリにsedを適用する方法がわかりません。ありがとう

4

3 に答える 3

1

最後の値を 2 番目の最後の値に追加し、最後の値を削除します。

awk '{$(NF-1) = $(NF-1) ";" $NF; NF--} 1'

または、ファイルをセミコロンで区切って扱い、最後の列を分割します

awk 'BEGIN {FS = OFS = ";"} {gsub(/[[:space:]]+/, FS, $NF)} 1'
于 2012-08-11T12:33:23.917 に答える
0
sed -e 's/ \(.\)$/;\1/' input_file > output_file

または、最後の列に複数の文字が含まれている可能性がある場合

sed -e 's/ \([[:alnum:]]*\)$/;\1/' input_file > output_file
于 2012-08-11T11:09:48.677 に答える
0
awk '{$NF=";"$NF;print}' input_file>output_file
于 2012-08-11T10:51:08.930 に答える