使用linux命令sed选择多行

时间:2012-10-02 00:07:16

标签: linux shell sed awk

我有一个示例[文件]我要抓取第3-6行和第11 - 13行然后使用一行命令排序并将其保存为3_6-11_13。这些是我到目前为止使用的命令,但我没有得到所需的输出:

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,但到目前为止我一直待在那里。

2 个答案:

答案 0 :(得分:14)

使用sed,您可以按编号指定地址,如下所示:

sed -n '3,6p'

-n是让sed自动打印输出。

然后,如果您使用gsed通过用分号分隔这些命令,则可以运行多个命令:

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

答案 1 :(得分:1)

使用-e选项

组合多个命令
$ sed -e 'comm' -e 'comm' file.txt

或者您可以使用分号

分隔命令
$ sed 'comm;comm;comm' file.txt