我需要在文本中查找字串才能知道它所在的行號。我的字串是一行,在我必須查找的檔案中分為兩行。有誰知道我怎樣才能找到它?謝謝
我的檔案.txt
Title number 1
Some random text
我需要找到諸如“number 1 Some random”、“1 Some random”之類的東西……
這是我的代碼,僅當所有內容都在一行時才有效:
doc="file.txt"
text="number 1 Some random"
line=$(awk 'NR == awkvar='$text'' $doc)
有什么建議?非常感謝你。
uj5u.com熱心網友回復:
$ cat tst.awk
BEGIN { OFS=": " }
NR>1 {
cur = prev " " $0
if ( index(cur,tgt) ) {
print NR-1, cur
}
}
{ prev = $0 }
$ awk -v tgt='number 1 Some random' -f tst.awk file
1: Title number 1 Some random text
如果您只想列印行號,當然,只需要print NR-1.
uj5u.com熱心網友回復:
這可能對您有用(GNU sed 和 bash):
file="file.txt"
text="number 1 Some random"
line=$(($(sed -n 'N;/'${tgt// /\\s}'/!D;=;q' "$file")-1))
從中構建正則運算式text并在 sed 腳本中使用它來報告正則運算式匹配的行號。
注意如果匹配發生在一行內,則行號可能會減 1。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/378771.html
上一篇:我如何告訴bash使用/usr/local/bin/python3而不是/usr/bin/python3?
下一篇:使2 文本區域相互反射
