我正在尝试使用 sed 在文本文件中查找字符串的行号。以下代码完美运行。
variable1=$(sed -n '/asdf/ =' $file);
我遇到的问题是当我尝试将搜索限制在一系列行号时。在下面的示例中,我试图将其限制在第 5 行到第 10 行。假设“asdf”存在于第 7 行。我没有将值设置为 variable2。
variable2=$(sed -n '5,10 /asdf/ =' $file);
谁能帮我?
我正在尝试使用 sed 在文本文件中查找字符串的行号。以下代码完美运行。
variable1=$(sed -n '/asdf/ =' $file);
我遇到的问题是当我尝试将搜索限制在一系列行号时。在下面的示例中,我试图将其限制在第 5 行到第 10 行。假设“asdf”存在于第 7 行。我没有将值设置为 variable2。
variable2=$(sed -n '5,10 /asdf/ =' $file);
谁能帮我?
你的 sed 线非常接近。见下文(借用 sudo_O 的输入示例:
kent$ echo "qwer
asdf
zxcv
qwer
asdf
zxcv
qwer
asdf
zxcv"| sed -n '5,10 {/asdf/=}'
5
8
以下是如何使用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
这对我有用:
variable2=$(sed -n '5,10 {/asdf/=}' $file);