如何修改awk命令,仅CSV文件两列不匹配时才与语料库对比输出XXX
正确修改后的awk命令
awk -F';' ' # 分隔符 NR==FNR { # 处理stem文件 gsub(/"/,"") # 去除双引号 if ($1 != $2) { # 仅第1列和第2列不相等的记录才存入数组 a[$2]=$1 } next } { if($1 in a) # 如果corpus的条目在数组中存在 print "XXX" # 输出XXX else print $1 # 否则输出原词 }' stem.txt corpus.txt
修改说明
- 核心改动在读取
stem.txt的逻辑中增加了$1 != $2的判断,过滤掉第一列和第二列内容相同的记录,避免test这个词被存入匹配数组。 - 你之前修改的判断逻辑不生效是因为处理
corpus.txt时,每行只有1个字段,$2是空值,a[$2]不存在,判断条件永远无法命中。
内容的提问来源于stack exchange,提问作者shantanuo
相关产品推荐
相关产品推荐

