awk - 使用 awk 将多个字符替换为 , csv 的逗号

标签 awk

亲爱的,

我有以下列表,其中有时包含 10000 个条目:

listID.14.1 = STRING: test1
listID.14.2 = STRING: test2
listID.14.3 = STRING: test3
listID.14.4 = STRING: test4
listID.14.5 = STRING: test5 
listID.14.6 = STRING: test6
listID.14.7 = STRING: test7 

我希望输出是这样的

test1,test2,test3,...,test7

我使用了下面的代码,它比换行更准确,因为一些列表包含换行

awk -F "listID.${listID}.([0-9]+|[0-9]{3}|[0-9]{1,5}) = STRING: " '{print ","$2}'

但输出恰好是:

,test1
,test2
,test3
,test4

这是错误的,不像我想要的那样“test1,test2,test3, ...., testn” 我不确定如何修改我的代码以获得如上所示的结果,我正在考虑的一些想法在开头添加新行但代码对我不起作用我想我使用了错误的格式。需要一些帮助

awk -F "\nlistID.${listID}.([0-9]+|[0-9]{3}|[0-9]{1,5}) = STRING: " '{print ","$2}'

需要一些帮助 还有关于此代码的第二个问题:

awk -F "listID.${listID}.([0-9]+|[0-9]{3}|[0-9]{1,5}) = STRING: " '{print ","$2}'

此特定格式 ([0-9]+|[0-9]{3}|[0-9]{1,5}) 是否检查 1 到 10000 之间的数字

最佳答案

提取最后一个空格后的文本并用逗号分隔打印:

 cut -d' ' -f4 | paste -sd,

测试:

cat <<EOF |
listID.14.1 = STRING: test1
listID.14.2 = STRING: test2
listID.14.3 = STRING: test3
listID.14.4 = STRING: test4
listID.14.5 = STRING: test5 
listID.14.6 = STRING: test6
listID.14.7 = STRING: test7 
EOF
cut -d' ' -f4 | paste -sd,

输出:

test1,test2,test3,test4,test5,test6,test7

关于awk - 使用 awk 将多个字符替换为 , csv 的逗号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58193093/

相关文章:

bash - 使用 sed 在捕获组内替换

linux - 如何在 Linux shell 中根据第一个字符分割文件

awk - 使用 awk 过滤返回空文件

regex - gawk 正则表达式没有按预期工作

linux - 将字符串附加到第二列中所有 CSV 字段末尾的 Shell 脚本

bash - 提取 ping 时间并使用时间戳作为前缀

awk - 如何合并awk中的一些行?

linux - sed 用特殊字符替换数字,除了一行中的最后一个字符串

awk - 在 awk 中,您可以同时使用模式和 END block 吗?

unix - awk 程序文件执行