string - 如何在 awk 中正确地进行字符串连接
问题描述
我正在尝试连接.csv
文件中的字符串。一个简单的示例数据文件是:
$ cat a
100, 200, 300
400, 500, 600
第一种方法没有任何结果。
$ awk 'BEGIN{FS=",";OFS="-"}{gsub(/ /, "");a=$1$2$3; print $a}' a
在第二种方法中,我也没有得到预期的结果。
$ awk 'BEGIN{FS=",";OFS="-"}{gsub(/ /, "");a="$1$2$3"; print $a}' a
100,200,300
400,500,600
预期的结果是
100200300
400500600
如果“.csv”文件有字符串而不是数字,我仍然没有得到预期的结果。中间插入了一些逗号 (,),即使我已将输出字段分隔符设置为破折号 (-)。
$ cat b
AAA, BBB, CCC
DDD, EEE, FFF
$ awk 'BEGIN{FS=",";OFS="-"}{gsub(/ /, "");a=$1$2$3; print $a}' b
AAA,BBB,CCC
DDD,EEE,FFF
在这种情况下,预期的结果是
AAABBBCCC
DDDEEEFFF
解决方案
尝试这个:
awk -F', *' -v OFS= '{$1=$1}1' a
100200300
400500600
awk -F', *' -v OFS= '{$1=$1}1' b
AAABBBCCC
DDDEEEFFF
将字段分隔符设置为逗号和零个或多个空格,并将输出字段分隔符设置为空,然后重新创建字段并打印它们。
或者只是删除逗号空间
awk '{gsub(/, */,"")}1' a
sed 's/, *//g' a
推荐阅读
- javascript - 如何从我的初始页面转到带有 HTML 的新 html 页面
- c++ - 模拟静态函数成员
- scala - sbt run 仅在我选择类时才起作用,而不是在我将其作为参数传递时
- python - 从可用数据结构生成二元决策图
- listview - 删除嵌套属性中的元素时更新 SwiftUI 列表
- python - (Python noob)将一串数字添加到列表时,它被分成数字
- flask - 使用线程运行 gunicorn
- ios - 设置 UIImage 颜色
- java - Liquibase Gradle 插件正在生成的更改日志中删除休眠序列表
- java - Java 将带有自动模块的模块打包到 JAR 中