首页 > 解决方案 > grep 命令未检索完整功能

问题描述

我正在尝试to_char()使用命令从文件中 grep 单词grep -E -o -i "TO_CHAR\(+..[^)]+\)",但无法获得完整的功能

TO_CHAR(123)
TO_CHAR(NVL(B.DATE,SYSDATE)
TO_CHAR(SUM(NVL(AMT,0)

一个文件包含以下几行:

TO_CHAR(DATE,'DD-MM-YYYY HH24:MI:SS') 
to_char(aaa) 
TO_CHAR('asc')

我需要选择不包含逗号的单词。它应该只获取to_char(aaa)并且TO_CHAR('asc')不应该选择TO_CHAR(DATE,'DD-MM-YYYY HH24:MI:SS'),因为它有一个逗号。

我试过使用:

TO_CHAR(.[^,)]*)

但它正在选择TO_CHAR(DATE

标签: grep

解决方案


这个问题不清楚,但是根据您在评论中提供的更多信息,您似乎正在尝试匹配,括号内不包含逗号的字符串()

如果我的假设是正确的,那么这个 grep 代码应该能够提取匹配。

grep -E '.*\(.[^,]*\)' input_file

输入

TO_CHAR(123)
TO_CHAR(NVL(B.DATE,SYSDATE)
TO_CHAR(SUM(NVL(AMT,0)TO_CHAR(DATE,'DD-MM-YYYY HH24:MI:SS')
to_char(aaa)
TO_CHAR('asc')

输出

TO_CHAR(123)
to_char(aaa)
TO_CHAR('asc')

推荐阅读