我有一个内容为
的文件$VARIABLE1 text $VARIABLE2
text $VARIBLE2
$VARIABLE3 TEXT $VARIABLE2
anothertext $VARIBLE2
$ VARIABLE2出现在所有行
中我需要所有只有$ VARIABLE2的行 所以我需要$只存在一次的行
我试过
cat filename | grep -F "$\{1\}"
它没有给我任何输出
答案 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
会愉快地接受文件名,或者您可以使用<
重定向其输入。