我有一个特定的单词,我想找出我的文件中出现的单词行号。
这是在c shell脚本中发生的。
我一直在尝试使用awk来查找行号,但到目前为止我还没有能够。我也希望将该行号分配给变量。
答案 0 :(得分:16)
要在文件中查找word
并打印行号,请使用-n
选项grep
:
grep -n 'word' file
这会打印行号和它匹配的行。
这将打印文件中出现单词word
的行数:
awk '/word/{print NR}' file
这将打印行号和word
出现的行:
awk '/word/{print NR, $0}' file
您可以将word
替换为您喜欢的任何正则表达式。
工作原理:
/word/
这会选择包含word
。
{print NR}
对于选定的行,将打印行号(NR表示记录号)。您可以更改此信息以打印您感兴趣的任何信息。因此,{print NR, $0}
将打印行号,后跟行本身$0
。
使用命令替换:
n=$(awk '/word/{print NR}' file)
假设我们要查找的正则表达式是shell变量url
:
awk -v x="$url" '$0~x {print NR}' file
和
n=$(awk -v x="$url" '$0~x {print NR}' file)
答案 1 :(得分:1)
<强>桑达强>
您可以使用sed命令
sed -n '/pattern/=' file
<强>解释强>
-n
抑制正常输出,因此它不会打印实际行。它首先匹配/pattern/
,然后=
运算符表示打印行号。请注意,这将打印包含该模式的所有行。
答案 2 :(得分:0)
答案 3 :(得分:0)
找到第一列与RRBS匹配的行号
awk 'i++ {if($1~/RRBS/) print i}' ../../bak/bak.db