4

私はこのようなファイルを持っています

line1
this is line1
line2
this is line2
line3
this is line3

awkまたはsedを使用して、すべての代替行で末尾の改行文字を削除し、このようにマージしたかった

line1: this is line1    
line2: this is line2
line3: this is line3

awkまたはsedを使用してそれを行うにはどうすればよいですか

4

4 に答える 4

3
$ cat input 
line1
this is line1
line2
this is line2
line3
this is line3
$ awk 'NR%2==1 {prev=$0} NR%2==0 {print prev ": " $0} END {if (NR%2==1) {print $0 ":"}}' input
line1: this is line1
line2: this is line2
line3: this is line3
$ 
于 2012-06-02T01:58:43.130 に答える
2

使用sed

sed -n '${s/$/:/p};N;s/\n/: /p' inputFile

元のファイルのバックアップを使用したインプレース編集の場合、

sed -n -i~ '${s/$/:/p};N;s/\n/: /p' inputFile
于 2012-06-02T02:47:00.297 に答える
2

これはあなたのために働くかもしれません:

sed -i '$!N;s/\n/: /' file
于 2012-06-02T07:31:49.193 に答える
1
sed 's/^\(line.*\)/\1:/' filename | paste - -

そしてPerlアナログ:

perl -ape 's/^(line.+)\n/$1: /' filename
于 2012-06-02T02:34:08.890 に答える