我想使用awk将CSV文件转换为仅包含原始列子集的新CSV文件。我也只想在其中一列中用下划线替换空格。我已经试过像这样:

gawk -F "," '
{
  name=gsub(/ /,"_",$1);
  label=$2;
  print ","name","label","
}' ./in.csv >> ./out.csv


但是gsub()返回匹配出现的次数,而不是替换字符串。所以我得到这样的东西:

,1,label


代替:

,name_nospace,label


如何使用像这样的awk gsub只替换一个列的字符?

最佳答案

别:

name=gsub()


因为gsub返回替换数,而不是字符串。只是

gsub()


并打印您喜欢的字段,即:

gsub(/ /,"_",$1);
label=$2;
print "," $1 "," label "," # or whatever you were doing

关于awk - 用awk gsub替换CSV文件一列中的字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41487510/

10-12 23:57