如果一列中的一个字符串相等,则打印出特定的文本AWK
问题描述:
我有问题,你能帮我吗?如果一列中的一个字符串相等,则打印出特定的文本AWK
输入:
LIS
LOP
LOP
LAT
如果输入一个或多个字符串将是“LIS”打印一行“有LIS”是否会有“LOP”或“LAT”的组合,没有“LIS “,打印”THERE IS LOP“,如果将所有字符串”LAT“打印为”只有LAT“。 谢谢
答
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
你尝试自己做任何事 –
是的,我试图做更多的行:我试图只用LIS打印行,如果有更多的行比0我打印有LIS和其他条件相同,但它不是在一个awk – Vonton
awk'{if ($ 1 ==“LIS”)print $ 0}'| awk'END {if(NR> 0)print“THERE IS LIS”}'等等。但是我不知道如何把它放在一个awk下面... – Vonton