2

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

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

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

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

谁能帮我?

4

3 回答 3

3

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

kent$  echo "qwer
asdf
zxcv
qwer
asdf
zxcv
qwer
asdf
zxcv"| sed -n '5,10 {/asdf/=}'  
5
8
于 2013-01-05T20:07:30.867 回答
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
于 2013-01-05T19:58:36.573 回答
0

这对我有用:

variable2=$(sed -n '5,10 {/asdf/=}' $file);
于 2013-01-07T23:10:54.947 回答