我想使用sed來查找文本文件中字符串的行號。以下代碼完美工作。Sed找到行號限制在一個行號範圍
variable1=$(sed -n '/asdf/ =' $file);
我遇到的問題是當我嘗試限制搜索範圍的行號。在下面的例子中,我試圖將其限制在第5行到第10行。假設第7行存在「asdf」,我沒有將值設置爲variable2。
variable2=$(sed -n '5,10 /asdf/ =' $file);
任何人都可以幫助我嗎?
我想使用sed來查找文本文件中字符串的行號。以下代碼完美工作。Sed找到行號限制在一個行號範圍
variable1=$(sed -n '/asdf/ =' $file);
我遇到的問題是當我嘗試限制搜索範圍的行號。在下面的例子中,我試圖將其限制在第5行到第10行。假設第7行存在「asdf」,我沒有將值設置爲variable2。
variable2=$(sed -n '5,10 /asdf/ =' $file);
任何人都可以幫助我嗎?
下面是如何與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
您的sed線非常接近。見下文(借用sudo_O的輸入例如:
kent$ echo "qwer
asdf
zxcv
qwer
asdf
zxcv
qwer
asdf
zxcv"| sed -n '5,10 {/asdf/=}'
5
8
謝謝!大括號做了訣竅。 – rmkilc
這裏是我工作:
variable2=$(sed -n '5,10 {/asdf/=}' $file);
你能詳細談談如何把第一個結果(5在你的例子)爲一個變量? ? – rmkilc
@rmkilc請參閱編輯 –
您可以將所有條件放在操作塊之外:'awk'5 <= NR && NR <= 10 &&/asdf/{print NR}'' –