string - awk 字符串替换

标签 string bash awk

我需要将一个 csv 字符串拆分为一个数组,如果元素的内容超过 300 个字符,则将其元素的内容剪切为 lngth 或 300。 我非常接近它,但由于某种我无法弄清楚的原因,这不起作用:

awk '{split($0,fields,",") 
 for(field in fields)
    if(length(fields[field]) >300){
     gsub(fields[field],substr(fields[field],0,300),$0)
   } print 
 }' file_in.csv > file_out

当我运行这个测试时我可以看到它:

awk '{split($0,fields,","); for(field in fields) if(length(fields[field]) >=301){print fields[field]} }' file_out

这仍在打印一些字段 知道我的 awk 有什么问题吗?

最佳答案

您可以使用此 awk 来修剪 > 300 的字段:

awk 'BEGIN{FS=OFS=","} 
     {for (i=1; i<=NF; i++) if (length($i)>300) $i=substr($i,1,300)}
     1' file.csv

关于string - awk 字符串替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22068233/

相关文章:

linux - 使用 ls 和 grep 而不是 find 搜索目录和子目录以查找与字符串匹配的文件并列出路径

bash - 可以执行二进制文件,但不能使用 "source"

bash - 将 PSQL 添加到 .bash_profile mac

awk - 在字段中替换后,awk 中的输出字段分隔符

python - 查找名称包含特定字符串的列

JQuery 按字符搜索字符串

awk - 使用 awk 更改文本文件格式

xml - awk 使用 printf fmt - 创建 xml

c++ - 什么时候使用 const string& 与 const string 比较好

ios - 单击按钮时在Swift中不重复单词-iOS