如何使用awk或sed加入两行?
for e.g.:
我的数据如下:
abcd
joinabcd
efgh
joinefgh
ijkl
joinijkl
我需要一个如下所示的输出:
joinabcdabcd
joinefghefgh
joinijklijkl
答案 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的回答产生了最好的结果。