大多数命令行程序一次只能在一行上运行。Bash中的连接线
我可以使用通用命令行实用程序(echo,sed,awk等)连接每一组两行,还是需要从头开始编写脚本/程序才能执行此操作?
$ cat myFile
line 1
line 2
line 3
line 4
$ cat myFile | __somecommand__
line 1line 2
line 3line 4
大多数命令行程序一次只能在一行上运行。Bash中的连接线
我可以使用通用命令行实用程序(echo,sed,awk等)连接每一组两行,还是需要从头开始编写脚本/程序才能执行此操作?
$ cat myFile
line 1
line 2
line 3
line 4
$ cat myFile | __somecommand__
line 1line 2
line 3line 4
sed 'N;s/\n/ /;'
抢下一行,用空格替代换行符。
seq 1 6 | sed 'N;s/\n/ /;'
1 2
3 4
5 6
$ awk 'ORS=(NR%2)?" ":"\n"' file
line 1 line 2
line 3 line 4
$ paste - - < file
line 1 line 2
line 3 line 4
+1用于粘贴。请注意,默认的分隔符是tab,如果你真的希望你的线条被粉碎,可以使用'-d“”'。 – 2010-10-22 17:52:06
+1贴;)不错的一个! – itshorty 2013-10-08 11:24:54
不是特定的命令,但这个片段壳应该做的伎俩:
cat myFile | while read line; do echo -n $line; [ "${i}" ] && echo && i= || i=1 ; done
UUOC。 '读线;做echo -n $ line; [“$ {i}”] && echo && i = || i = 1;完成
呵呵,在你发布之前,我并不熟悉UUOC。对于简单的情况,我仍然认为即使速度稍慢并且浪费一个过程,猫也会更清楚。 :-) – kanaka 2010-10-22 15:39:46
更清晰?输入重定向不太清楚? :) – ghostdog74 2010-10-22 23:04:48
这里并不需要切换的标志shell脚本版本:
while read line1; do read line2; echo $line1$line2; done < inputfile
OT,但使用'seq 1 6'代替'echo'命令。 – 2010-10-22 17:53:11
@glenn:谢谢。总是在UNIX中学习新东西...... – 2010-10-23 20:34:22
'printf“%s \ n”{1..6} | sed'N; s/\ n//;''。 – ghostdog74 2010-10-26 07:56:12