目标:只有字段1中符合" ^ [A-Z] [a-z] + $"的小写字词。字段由制表符分隔。
输入:
Agne XXX
Agn_Ball YYY
输出:
agne XXX
Agne_Ball YYY
代码:
awk -F '\t' 'BEGIN {OFS='\t'} $1 ~ /^[A-Z][a-z]+$/ {print tolower($1),$2}1' < test.tmp > test.tmp2
然而,结果是:
agne XXX
Agne XXX
Agne_Ball YYY
所以如何修改命令以获得结果。
答案 0 :(得分:3)
你非常接近,你需要在条件块中使用next
以避免2次打印。关注awk
可能对您有帮助。
awk '$1 ~ /^[A-Za-z]+$/{$1=tolower($1)} 1' Input_file
或者按照jas在评论中的建议添加以下内容。
awk '$1 ~ /^[A-Z][a-z]+$/{$1=tolower($1)} 1' Input_file
答案 1 :(得分:0)
awk '$1 == "Agne" {print tolower($1),$2}sub(/Agn_/,"Agne_")' OFS="\t" file
agne XXX
Agne_Ball YYY