如何在文件中查找特定字符串并显示匹配的字符串和其余部分?
例如 - 我在a.txt
中有一行:
This code gives ORA-12345 in my code.
所以,我找到字符串' ORA - '
输出应该是:
ORA-12345 in my code
尝试使用grep:
grep 'ORA-*' a.txt
但它在输出中给出了整行。
答案 0 :(得分:2)
# Create test data:
echo "junk ORA-12345 more stuff" > a.tst
echo "junk ORB-12345 another stuff" >> a.tst
# Actually command:
# the -o (--only-matching) flag will print only the matched result, and not the full line
cat a.tst | grep -o 'ORA-.*$' # ORA-12345 more stuff
正如fedorqui指出你可以使用:
grep -o 'ORA-.*$' a.tst
答案 1 :(得分:0)
awk中的另一个答案:
awk '$0 ~ "ORA" {print substr($0, match($0, "ORA"))}' a.tst
从内到外,这里有什么:
match($0, "ORA")
查找行ORA
中的位置。在这种情况下,恰好是第17位。
substr($0, match($0, "ORA"))
然后从第17位返回到该行的末尾。
$0 ~ "ORA"
确保上述内容仅适用于包含ORA
的行。
答案 2 :(得分:0)
sed
echo "This code gives ORA-12345 in my code." | sed 's/.*ORA-/ORA-/'