shell/bash 两个变量的提取和判断,即:实现两个条件同时存在

例如文件里是如下信息:
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

...两个变量的提取和判断,即:实现两个条件同时存在
awk -v RS="" '\/1234\/&&!\/qwer\/' file.txt你的这个例子,由于出现了qwer,所以输出为空。RS(记录分隔符)默认为换行符,但这里将所有文件内容作为一条记录来整体看待,以便判断是否含有要求的内容,所以清除了记录分隔符。

shell\/bash 判断一个句子是否同时存在两个字符串,怎么写。
awk '\/DIM.*Mem.*CHANNEL\/' file.txt如果出现顺序可能随机,那么这样:awk '\/DIM\/ && \/Mem\/ && \/CHANNEL\/' file.txt

在shell编程的for in循环中,如何在条件中使用两个变量。
如果是bash, 可以用 for (( expr1; expr2; expr3 )) 这种循环语法来实现。 比如 for (( i=1, j=7; i<5 && j >3; i++, j-- ))do echo "i $i, j $j"done

Shell 脚本中的 if 条件判断
条件判断格式Shell提供了两种判断格式,一种是基础的if...else...,另一种则是简化的版本。判断语句的真假在Bash中通过变量类型和特殊变量$?来确定,0表示成功,非0表示失败。if语句示例单分支:用于执行单一操作,如检查文件是否存在双分支:通过逻辑运算符(如&&或||)结合两个条件多分支:使用嵌套if...

编写一个shell程序,键盘输入两个数以及+、-、*、\/中的任一运算符,计算...
可以这样写,我加了些判断条件,有点长,交互式和命令列用参数形式 合在一起 User@User-PC ~cat a ! \/bin\/bash checkargu(){ if echo "$num" | grep -E '^[0-9]+$' > \/dev\/null 2>&1 \\ && echo "$num2" | grep -E '^[0-9]+$' > \/dev\/null 2>&1 then myexpr els...

Shell 中的 if 与条件判断
在 Shell 环境中,实现条件判断使用 if 和 test 命令。if 命令根据指定条件执行或跳过特定命令,而 test 命令则比较两个值,返回真或假。if 语句基本结构如下:其中,condition 是条件表达式,如果为真,则执行 then 后面的命令。fi 用于标记 if 块的结束。if 语句嵌套:Shell 脚本中可利用 if 语句...

linuxbash\/sh\/shell编程中的if语句应该怎么写?
示例脚本 if.sh 包含条件判断和命令序列。脚本中,USER 变量接收程序参数,若未设置则使用 "xiaotian"。if 语句判断 USER 是否为 "xiaotian",并执行对应命令序列。命令 "id $USER 2>\/dev\/null" 判断 USER 是否存在于系统。如果条件不满足,则执行 else 内容。循环结构包括 while、until 和 for。

在shell中如何判断一个变量是否为空
在shell中判断一个变量是否为空,可以使用以下方法:方法一:使用`-z`测试条件 在shell脚本中,`-z`可以用来测试字符串长度是否为0。如果变量为空,则返回真。例如:bash if [ -z "$变量名" ]; then echo "变量为空"else echo "变量不为空"fi 方法二:使用`[ "$变量名" == "" ]`比较...

Linux bash shell脚本语法有哪些?
读取变量`read`,然后使用`case`语句进行多条件判断。例如,输入数字1则输出"you numer is 1",输入数字2则输出"you number is 2",输入3到9的任意数字则输出"you number is $ans",输入其他则输出"others"。5. 比较运算符 比较运算符用于比较两个值。示例包括文件存在性检查、目录、常规文件、...

编写一个shell脚本实现: 判断用户家目录下(~)下面有没有一个叫test的...
\/bin\/bashcd ~dir="test"if [ -d "$dir" ];then num=0 while (($num < 3));do read -p "Input file name:" file if [ -f "$dir\/$file" ];then echo "file is exists,please input other file name" num=`expr $num + 1` continue else touch...

相似回答