是否可以使用awk
或sed
从文件末尾找到第一个字符串?或者我需要使用Python或Perl等脚本语言?
答案 0 :(得分:2)
您可以使用tac
(与cat
相反)恢复文件中的行顺序,然后使用grep
:
tac file | grep -m 1 STRING
grep -m1
仅为您提供第一次出现。
或者您可以将grep
传递给tail
:
grep STRING | tail -n1
如果您想使用awk
:
awk 'BEGIN{res=""}/STRING/{res=$0}END{if(res!=""){print res}}' file
说明:
# Initialize result with an empty string
BEGIN{res=""}
# If STRING is found, store the current line in res.
# This will overwrite a previous result, giving you
# always only the last occurrence.
/STRING/{res=$0}
# Once the end of input has been reached print the result
# if STRING was found.
END{if(res!=""){print res}}
答案 1 :(得分:2)
使用sed
sed -n '/string/h;${x;p}' infile
使用awk
tac infile | awk '/abc/{print;exit}'
测试结果:
akshay@db-3325:/tmp$ cat infile
abc 1
xyz 2
pwd 3
cwd 4
aks 5
axy 6
abc 7
xyz 8
nwd 9
akshay@db-3325:/tmp$ sed -n '/abc/h;${x;p}' infile
abc 7
akshay@db-3325:/tmp$ tac infile | awk '/abc/{print;exit}'
abc 7
答案 2 :(得分:1)
关注tac
和awk
组合将帮助您快速阅读任何字符串的第一次出现。
tac Input_file | awk '/STRING/{print;exit}'
说明: tac
将反转Input_file,然后awk
将检查字符串,一旦获得它将打印该行并退出它,因为它只是在第一次出现时很烦,所以不需要在这里读取整个Input_file。