我使用以下命令获取特定字符串的行号
str_to_search="\/searchString >"
fileName=Myfile.txt
startingCt=$(awk '$0 ~ str{print NR; exit }' str="$str_to_search" $fileName)
endingCt=$(($startingCt + 3))
echo $startingCt
echo $endingCt
我能够获取行号,但我收到转义序列的警告消息
awk:cmd。 line:1:warning:转义序列
\/' treated as plain
/'
如果有任何方法可以忽略转义序列的警告,请告诉我,是否有更好的方法来获取行号。提前谢谢。
答案 0 :(得分:3)
问题可能与您的awk版本有关。
请参阅此处的链接:http://ubuntuforums.org/showthread.php?t=474549
以下是AWK的方式:
gawk '/PATTERN/ {print FNR}' filename
我可以提供这个解决方案,虽然它没有使用awk吗?
sed -n '/pattern/=' filename
Sed和AWK有点像可爱的兄弟,你会在很多系统上找到它们的某种版本,并且分享很多功能,但是使用它们的方式不同。
上述命令将仅输出您要查找的模式的行号。