在我自己努力解决我在 Ask Fedora 上提出的这个未解决的问题时,我一直在尝试确定Fedora我的/boot/grub2/grub.cfg文件中最后一次出现字符串的行号。有没有办法做到这一点使用sed,grep,awk或任何其它常见壳(特别是在Z壳牌,如果特定的UNIX shell我使用事项)命令?例如,我想要的命令将为此 grub.cfg文件返回127(即,第 127 行,这是字符串最后一次出现的位置Fedora)。我会使用这个 shell 命令来确定这个行号,以便我可以将它提供给 sed(使用类似于这个问题中的命令sed,因为我只想在提到 Fedora 的那些行之后替换正则表达式)。
使用 awk:
awk '/Fedora/ { ln = FNR } END { print ln }'
Run Code Online (Sandbox Code Playgroud)
使用 grep:
grep -n 'Fedora' | tail -n1 | cut -d: -f1
Run Code Online (Sandbox Code Playgroud)
使用外壳(仅在 bash 中测试):
unset ln lnr
while read -r; do
((lnr++))
case "$REPLY" in
*Fedora*) ln="$lnr";;
esac
done < grub.cfg
echo $ln
Run Code Online (Sandbox Code Playgroud)