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

问题描述:

我有问题,你能帮我吗?如果一列中的一个字符串相等,则打印出特定的文本AWK

输入:

LIS 
LOP 
LOP 
LAT 

如果输入一个或多个字符串将是“LIS”打印一行“有LIS”是否会有“LOP”或“LAT”的组合,没有“LIS “,打印”THERE IS LOP“,如果将所有字符串”LAT“打印为”只有LAT“。 谢谢

+1

你尝试自己做任何事 –

+0

是的,我试图做更多的行:我试图只用LIS打印行,如果有更多的行比0我打印有LIS和其他条件相同,但它不是在一个awk – Vonton

+0

awk'{if ($ 1 ==“LIS”)print $ 0}'| awk'END {if(NR> 0)print“THERE IS LIS”}'等等。但是我不知道如何把它放在一个awk下面... – Vonton

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 

​​

----------

示例文件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