我尝试在同一行中使用bash两行文本文件进行打印,并且只使用一个命令。
例如,如果您有下一个文件,并且您想要第1行和第3行
Cat
Bye
Bash
Dog
Hello
然后你需要一个返回以下
的命令$ cmd
Cat Bash
这可能吗?我试试
$ sed -n '1,3{p;n;}' [FILENAME]
但它会在两行不同的行中打印两行文字,例如:
Cat
Bash
感谢
答案 0 :(得分:1)
$ sed -n '1 h; 3{x;G;s/\n/ /;p}' fname
Cat Bash
-n
这告诉sed
除非我们明确要求,否则不要打印任何内容。
1 h
当我们到达第1行时,会告诉sed
将其保存在' hold'空间。
3 {x;G;s/\n/ /;p;}
当我们到达第3行时,我们会执行以下操作:
x
交换模式空间并保留空间。完成此操作后,模式空间具有第1行,保持空间具有第5行。
G
将保留空间附加到模式空间。完成此操作后,模式空间具有第1行和第3行。
s/\n/ /
用空格替换分隔第1行和第3行的换行符。完成后,第1行和第3行的数据在同一行。
p
告诉sed
打印结果。
在Mac OSX上,尝试:
sed -n -e '1 h' -e '3{x;G;s/\n/ /;p;}' fname
答案 1 :(得分:0)
这应该有效:
echo `sed -n '3,5{p;n;}' [FILENAME]`
只是一个额外的回声'用命令替换``加入行。
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed '1H;3H;$!d;x;s/\n//;y/\n/ /' file
通常将所需行添加到保留空间(HS)并删除除最后一行之外的所有行。在最后一行交换到HS,删除第一个换行符并将所有其他换行符转换为空格。
N.B。要收集的行可以按任何顺序陈述,只要它们位于最后一行的地址之前。 如果知道集合的顺序,则该方法可以缩短为:
sed '1h;2H;$!d;x;y/\n/ /' file