grep找到只有“$”一次的行

时间:2018-01-15 16:25:53

标签: unix grep

我有一个内容为

的文件
$VARIABLE1 text $VARIABLE2
text $VARIBLE2
$VARIABLE3 TEXT $VARIABLE2
anothertext $VARIBLE2

$ VARIABLE2出现在所有行

我需要所有只有$ VARIABLE2的行 所以我需要$只存在一次的行

我试过

cat filename | grep  -F "$\{1\}"

它没有给我任何输出

3 个答案:

答案 0 :(得分:3)

如果您只想获得带有$个符号的行:

awk -F'$' 'NF==2' file

这个awk单行将帮助你。

它的作用是:将$作为字段分隔符,如果一行中只有一个$,则该行必须分为2个部分(字段)。

答案 1 :(得分:1)

易:

grep '^[^$]*\$[^$]*$' filename

解释:一行以任意数量的“非美元”字符开头,然后是一美元,然后是任意数量的“非美元”字符,直到结束。

这可确保您只捕获正好一个美元符号的行。请注意使用单引号来防止bash扩展美元符号。

答案 2 :(得分:0)

考虑在管道中使用两个命令 - 一个用于删除没有$的行,另一个用于删除包含2个或更多$的行:

grep -F '$' filename | grep -v '\$.*\$'

P.S。无需调用cat - grep会愉快地接受文件名,或者您可以使用<重定向其输入。