使用awk或sed连接两个连续的行

时间:2010-07-07 12:15:10

标签: unix sed awk

如何使用awk或sed加入两行?

for e.g.:

我的数据如下:

abcd
joinabcd
efgh
joinefgh
ijkl
joinijkl

我需要一个如下所示的输出:

joinabcdabcd
joinefghefgh
joinijklijkl

7 个答案:

答案 0 :(得分:42)

awk '!(NR%2){print$0p}{p=$0}' infile

答案 1 :(得分:5)

awk 'BEGIN{i=1}{line[i++]=$0}END{j=1; while (j<i) {print line[j+1] line[j]; j+=2}}' yourfile

不需要sed。

答案 2 :(得分:3)

他们说模仿是最真诚的奉承形式 这是一个受Dimitre的awk代码启发的Perl解决方案:

perl -lne 'print "$_$p" if $. % 2 == 0; $p = $_' infile

$_是当前行 $.是行号

答案 3 :(得分:2)

这是sed:

sed 'h;s/.*//;N;G;s/\n//g' < filename

答案 4 :(得分:0)

上面“sed”脚本的一些改进将采取以下措施: 1008
-2734406.132904 2846
-2734414.838455 4636
-2734413.594009 6456
-2734417.316269 8276
-2734414.779617

  and make it :    

1008 -2734406.132904
2846 -2734414.838455
4636 -2734413.594009
6456 -2734417.316269
8276 -2734414.779617

  the "sed" is : "sed 'h;s/.*//;G;N;s/\n/ /g'"

答案 5 :(得分:0)

您可以将printf与三元组配合使用:

    awk '{printf (NR%2==0) ? $0 "\n" : $0}'

答案 6 :(得分:0)

这是命令中“如何使计数和文件显示在同一行上”问题的答案:

find . -type f -exec fgrep -ci "MySQL" {} \; -print

Bryon Nicolson的回答产生了最好的结果。