我正在尝试使用sed来查找文本文件中字符串的行号。以下代码完美无缺。
variable1=$(sed -n '/asdf/ =' $file);
我遇到的问题是当我尝试将搜索限制为一系列行号时。在下面的示例中,我试图将其限制为第5行到第10行。假设第7行中存在“asdf”。我没有将值设置为variable2。
variable2=$(sed -n '5,10 /asdf/ =' $file);
任何人都可以帮助我吗?
答案 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);