使用AWK或SED仅加入合并文件的前两行

时间:2014-12-23 05:39:18

标签: join awk sed merge lines

我有一个像这样的文件

Line1
Line2
Line3
Line4
Line5

我需要这样的输出:

Line1Line2
Line3
Line4
Line5

我尝试了 sed“:a; N; $!ba; s / \ n // g”asd.txt ,但它将所有行合并为一行。

4 个答案:

答案 0 :(得分:3)

awk解决方案就像

$ awk '{ORS=(NR==1?"":"\n")}1 ' input
Line1Line2
Line3
Line4
Line5

$ awk '{ORS=(NR==1?"":RS)}1 ' input
Line1Line2
Line3
Line4
Line5

答案 1 :(得分:2)

使用sed您可以将操作限制为specific line number。在这种情况下,我们将append(到模式空间)和替换限制为第1行:

sed '1 {N; s/\n//}' file

请注意,此解决方案也可以在没有大括号的情况下编写:

sed '1N; s/\n//' file

但请注意,最后一个解决方案的可维护性稍差。这对你来说是否有问题是另一回事。在任何一种情况下,结果都是:

Line1Line2
Line3
Line4
Line5

答案 2 :(得分:0)

你可以试试下面的sed命令,

$ sed 'N;0,/\n/s/\n//' file
Line1Line2
Line3
Line4
Line5

N将下一行添加到模式空间中。 0,/./(指定范围)有助于仅在第一场比赛中进行替换。 s/\n//用空字符串替换第一个换行符。

答案 3 :(得分:0)

sed '1 {N;s/\n//}'

结果

Line1Line2
Line3
Line4
Line5

取第1行并添加下一行。然后删除换行符