用于查找限制为一系列行号的行号

时间:2013-01-05 19:27:07

标签: sed

我正在尝试使用sed来查找文本文件中字符串的行号。以下代码完美无缺。

variable1=$(sed -n '/asdf/ =' $file);

我遇到的问题是当我尝试将搜索限制为一系列行号时。在下面的示例中,我试图将其限制为第5行到第10行。假设第7行中存在“asdf”。我没有将值设置为variable2。

variable2=$(sed -n '5,10 /asdf/ =' $file);

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

以下是awk

的方式
$ cat file
qwer
asdf
zxcv
qwer
asdf
zxcv
qwer
asdf
zxcv 

$ awk '/asdf/ && NR>=5 && NR<=10 {print NR}' file
5
8

如果你想在第一场比赛后停止exit脚本,并使用命令替换将值存储在变量中:

$ awk '/asdf/ && NR>=5 && NR<=10 {print NR; exit}' file
5

$ var=$(awk '/asdf/ && NR>=5 && NR<=10 {print NR; exit}' file)

$ echo $var
5

答案 1 :(得分:3)

你的sed线非常接近。见下文(借用了sudo_O的输入示例:

kent$  echo "qwer
asdf
zxcv
qwer
asdf
zxcv
qwer
asdf
zxcv"| sed -n '5,10 {/asdf/=}'  
5
8

答案 2 :(得分:0)

这对我有用:

variable2=$(sed -n '5,10 {/asdf/=}' $file);