在我自己努力解决我在Ask Fedora中this opened question的问题时,我一直在尝试确定Fedora
文件中最后一次出现字符串/boot/grub2/grub.cfg
的行号。有没有办法使用sed
,grep
,awk
或任何其他常见shell(特别是Z Shell,如果我正在使用的特定Unix shell)命令?例如,我想要的命令将为this grub.cfg文件返回127
(即第127行,这是字符串Fedora
最后一次出现的位置)。我将使用此shell命令来确定此行号,以便我可以将其提供给sed(sed
命令与this question中的with Ada.Text_IO; use Ada.Text_IO;
procedure c_case_example is
c_case : natural range 1 .. 10 := 1;
begin
case c_case is
when 1 => goto case_1;
when 3 .. 5 => goto case_3;
when 6|8 => goto case_6;
when others => goto case_others;
end case;
<<case_1>> put_line("Case 1");
<<case_3>> put_line("Case 3,4,5");
goto break;
<<case_6>> put_line("Case 6,8");
<<case_others>> put_line("all other cases");
<<break>> null;
put_line("Done");
end c_case_example;
命令类似,因为我只想在这些命令后面的行中替换正则表达式提到Fedora)。
答案 0 :(得分:4)
使用awk:
awk '/Fedora/ { ln = FNR } END { print ln }'
使用grep:
grep -n 'Fedora' | tail -n1 | cut -d: -f1
使用shell(仅在bash中测试):
unset ln lnr
while read -r; do
((lnr++))
case "$REPLY" in
*Fedora*) ln="$lnr";;
esac
done < grub.cfg
echo $ln