2012-10-02 129 views
6

我有一个示例[文件],我想抓取3-6行和11-13行,然后用一行命令排序并将其保存为3_6-11_13。这是迄今为止我所使用的命令,但我还没有得到期望的输出:使用linux命令选择多行sed

sed -n '/3/,/6/p'/11/,/13/p file_1 > file_2 | sort -k 2 > file_2 & sed -n 3,6,11,13p file_1 > file_2 | sort -k 2 file_2. 

有没有更好的方式来缩短这个。我曾考虑过使用awk,但是到目前为止我一直在使用sed。

回答

11

分隔命令有了sed你被允许用数字像这样指定地址:

sed -n '3,6p' 

-n是要保留sed自动打印输出。

然后,你可以,如果你正在使用gsed用分号分隔这些命令运行多个命令:

sed -n '3,6p; 11,13p' | sort -k2 > 3_6-11_13 
+0

谢谢Tim Pote。我使用了你建议的稍微修改过的版本。我实际上已经尝试了你在今天早些时候提出的建议,但是在'3,6p;'之后,我不断地发现一个错误对我没有使用分号。再次感谢。 – demet8

1

SED使用-e选项

$ sed -e 'comm' -e 'comm' file.txt 

组合多个命令,也可以使用分号

$ sed 'comm;comm;comm' file.txt 
+0

谢谢b3h3m0th。 – demet8