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

If one string in column is equal, print specific text wit AWK

我有问题,你能帮我吗?

输入:

LIS
LOP
LOP
LAT

如果输入中的一个或多个字符串 "LIS" 打印一行 "THERE IS LIS" 如果有 "LOP" 或 "LAT" 的组合,没有 "LIS", 打印 "THERE IS LOP" 如果有所有字符串 "LAT" 打印 "THERE IS ONLY LAT"。 谢谢

awk解决方案:

check_column.awk 脚本:

#!/bin/awk -f

/LIS/{ print "THERE IS LIS"; exit }
[=10=]!~/(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