在Bash中连接行

时间:2010-10-22 15:25:55

标签: sed awk

大多数命令行程序一次只能在一行上运行。

我可以使用通用的命令行实用程序(echo,sed,awk等)来连接每一行的两行,还是需要从头开始编写脚本/程序来执行此操作?

$ cat myFile
line 1
line 2
line 3
line 4

$ cat myFile | __somecommand__
line 1line 2
line 3line 4

5 个答案:

答案 0 :(得分:11)

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

抓住下一行,并用空格替换换行符。

seq 1 6 | sed 'N;s/\n/ /;'
1 2
3 4
5 6

答案 1 :(得分:8)

$ awk 'ORS=(NR%2)?" ":"\n"' file
line 1 line 2
line 3 line 4

$ paste - -  < file
line 1  line 2
line 3  line 4

答案 2 :(得分:1)

不是特定的命令,但是这个shell片段应该可以解决这个问题:

cat myFile | while read line; do echo -n $line; [ "${i}" ] && echo && i= || i=1 ; done

答案 3 :(得分:1)

您也可以将Perl用作:

$ perl -pe 'chomp;$i++;unless($i%2){$_.="\n"};' < file
line 1line 2
line 3line 4

答案 4 :(得分:1)

这是一个不需要切换标志的shell脚本版本:

while read line1; do read line2; echo $line1$line2; done < inputfile