如何在我要查找的文件中找到一个分成两行的字符串?
How can I find a string that is separated into two lines in the file where I want to find it?
我需要在文本中查找字符串以了解它所在的行号。我的字符串是一行,在我必须查找的文件中分为两行。有谁知道我如何寻找它?谢谢
我的file.txt
Title number 1
Some random text
我需要找到诸如“数字 1 随机”、“1 随机”之类的东西...
这是我的代码,只有在所有内容都在一行中时才有效:
doc="file.txt"
text="number 1 Some random"
line=$(awk 'NR == awkvar='$text'' $doc)
有什么建议吗?非常感谢。
$ cat tst.awk
BEGIN { OFS=": " }
NR>1 {
cur = prev " " [=10=]
if ( index(cur,tgt) ) {
print NR-1, cur
}
}
{ prev = [=10=] }
$ awk -v tgt='number 1 Some random' -f tst.awk file
1: Title number 1 Some random text
如果您只想打印行号,那么当然只需要 print NR-1
.
这可能对你有用(GNU sed & bash):
file="file.txt"
text="number 1 Some random"
line=$(($(sed -n 'N;/'${tgt// /\s}'/!D;=;q' "$file")-1))
从 text
构建正则表达式并在 sed 脚本中使用它来报告正则表达式匹配的行号。
N.B。如果匹配发生在一行内,则行号可能会相差 1。
我需要在文本中查找字符串以了解它所在的行号。我的字符串是一行,在我必须查找的文件中分为两行。有谁知道我如何寻找它?谢谢
我的file.txt
Title number 1
Some random text
我需要找到诸如“数字 1 随机”、“1 随机”之类的东西...
这是我的代码,只有在所有内容都在一行中时才有效:
doc="file.txt"
text="number 1 Some random"
line=$(awk 'NR == awkvar='$text'' $doc)
有什么建议吗?非常感谢。
$ cat tst.awk
BEGIN { OFS=": " }
NR>1 {
cur = prev " " [=10=]
if ( index(cur,tgt) ) {
print NR-1, cur
}
}
{ prev = [=10=] }
$ awk -v tgt='number 1 Some random' -f tst.awk file
1: Title number 1 Some random text
如果您只想打印行号,那么当然只需要 print NR-1
.
这可能对你有用(GNU sed & bash):
file="file.txt"
text="number 1 Some random"
line=$(($(sed -n 'N;/'${tgt// /\s}'/!D;=;q' "$file")-1))
从 text
构建正则表达式并在 sed 脚本中使用它来报告正则表达式匹配的行号。
N.B。如果匹配发生在一行内,则行号可能会相差 1。