例如文件里是如下信息:
1234
qwer
5678
输出信息的需求为: 信息“1234”必须存在 并且 一定不可以出现 qwer,为期望的输出信息。 用怎样的方式 写这个命令语句呢? 谢谢。
awk -v RS="" '/1234/&&!/qwer/' file.txt
你的这个例子,由于出现了qwer,所以输出为空。
RS(记录分隔符)默认为换行符,但这里将所有文件内容作为一条记录来整体看待,以便判断是否含有要求的内容,所以清除了记录分隔符。
追问你好,我还是没有明白, 这个方法 用两个If语句嵌套, 是可以实现的, 比如 先判断1234存在, 再判断qwer的状态, 而且 1234 qwer是属于log文件内不同的 两行, 所以 想用一个比较简练的方法表达。
追答我有点不明白你的意思。
可否先给出你的方法,如何用两个if语句嵌套?
然后我再看看是否可以优化。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2014-01-01
#!/bin/bash
one=`grep 1234 test.txt`
two=`grep qwer test.txt`
if [ ! -z $one ] && [ -z $two ] ;
then
echo "期望的输出信息"
fi
one=`grep 1234 test.txt`
two=`grep qwer test.txt`
if [ ! -z $one ] && [ -z $two ] ;
then
echo "期望的输出信息"
fi