如果列中的一个字符串相等,则使用AWK打印特定文本

时间:2017-09-04 11:08:09

标签: awk find equality

我有问题,你能帮我吗?

INPUT:

LIS
LOP
LOP
LAT

如果输入中的一个或多个字符串是" LIS"打印一行"有LIS"如果有" LOP"或者" LAT",没有" LIS",打印"有LOP"如果有所有字符串" LAT"打印"只有LAT"。 谢谢

1 个答案:

答案 0 :(得分:2)

awk 解决方案:

check_column.awk 脚本:

#!/bin/awk -f

/LIS/{ print "THERE IS LIS"; exit }
$0!~/(LOP|LAT)/{ print "No matches"; exit }
/LOP/{ lop++ }/LAT/{ lat++ }
END{ 
    if (lop || lat) { 
        printf "%s\n", (lat==NR)? "THERE IS ONLY LAT":"THERE IS LOP" 
    } 
}

<强> 用法:

示例文件file1

LIS
LOP
LOP
LAT
awk -f check_column.awk file1
THERE IS LIS

<强> ----------

示例文件file2

LOP
LOP
LAT
LAT
awk -f check_column.awk file2
THERE IS LOP

<强> ----------

示例文件file3

LAT
LAT
LAT
awk -f check_column.awk file3
THERE IS ONLY LAT