我的csv包含以下示例数据。
column1,column2,column3
abc,123,sample_test_FT.txt
abc,123,sample_test_IFT.txt
我只需要打印第3列最后一个下划线后面的字符等于" I"
期望的输出:
column1,column2,column3
abc,123,sample_test_IFT.txt
到目前为止,我已经提出了这个代码,但并不是很有效。
awk -v FPAT='([^,]*)|("[^"]*")' -v var1=3 '{if (substr("${var1##*_}",1,1) == "I" ) print; else TRUE}'
答案 0 :(得分:0)
使用 awk
的match()
函数:
awk -v FPAT='[^,]+|"[^"]+"' 'NR==1; NR > 1 && match($3, /^[^_]+_[^_]+_I/)' file
输出:
column1,column2,column3
abc,123,sample_test_IFT.txt
答案 1 :(得分:0)
awk -v FPAT='([^,]*)|("[^"]*")' 'NR==1; NR>1 && match($3,"_I[^_]*$")'
正则表达式检查是否存在_I
并且$3
中没有更多下划线。
答案 2 :(得分:0)
关注awk
也可能会有所帮助:
awk -F, 'FNR==1{print;next} {split($3,array,"_");if(substr(array[3],1,1)=="I"){print;next}}' Input_file
现在也添加一种非单一的衬里形式的解决方案。
awk -F, '
FNR==1{
print;
next
}
{
split($3,array,"_");
if(substr(array[3],1,1)=="I"){
print;
next}
}
' Input_file