linux - Grep 在反引号内寻找美元符号

标签 linux shell unix grep

我有这样一个文件

文件名:hello.txt

{1:ABC}{2:BCD}{3:{108:20140619-2}}{4:
:97A::Hi//12345
:97A::Hi//12345
:93B::Hello//FAMT/00000,
:16S:FIN
-}{5:{CHK:BDG6789}}{S:{ABC:}{DEF:S}{WOM:ONHGRT}}

现在基本上我正在检查是否存在 $ 符号以及 :97A: 并且我使用下面的 if 语句。

if [ `grep -c '\$' hello.txt` -gt 0 ] && [ `grep -c ":97A:" hello.txt` -gt 1 ]
then
echo "condition satisfied"
else
echo "condition not satisfied"
fi

如果我执行此 im 得到满足条件的 echo 语句。但 id 应该是相反的:(因为我正在输入 AND 条件。请帮助解决这个问题。

最佳答案

我也不明白你在问什么,但从你的代码中我得出结论,你在寻找美元符号时遇到了麻烦。我想如果你使用反引号,你也需要转义反斜杠:

$ echo 'foo$bar' > dollar.txt
$ echo 'foo_bar' > no_dollar.txt

$ [ `grep -c '\$' dollar.txt` -gt 0 ] && echo 1
1

$ [ `grep -c '\$' no_dollar.txt` -gt 0 ] && echo 1
1

$ [ `grep -c '\\$' dollar.txt` -gt 0 ] && echo 1
1

$ [ `grep -c '\\$' no_dollar.txt` -gt 0 ] && echo 1

$ [ `grep -c '\\$' no_dollar.txt` -gt 0 ] || echo 0
0

或者,使用 $() 代替反引号

关于linux - Grep 在反引号内寻找美元符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24329068/

相关文章:

apache - Htaccess 规则将域重定向到 index.html

c++ - mmap分配的是页面还是页面的一部分?

linux - 在 linux shell 脚本中传递 control+C

java - 执行java程序时^M的原因

c++ - 运行 shell 脚本时出错 : "pipe call failed"

c - 为什么我不能在 POSIX 信号处理中使用 I/O?

linux - 安装 mpich2 总是安装我 mpich

linux - 使用 shell globbing 匹配所有嵌套目录下的所有文件

linux - 如何移动目录中具有特定前缀的所有文件?

linux - 如何删除子目录下的文件但不删除子目录本身在linux中