执行awk处理备份命令输出时,如何去除结果中的逗号(,)?
去除Bacula joblog输出数字中逗号的解决方案
我来帮你搞定这个问题!你当前执行的命令是:
[root@test ~]# echo "list joblog job=host1"|bconsole| awk -F"|" '/host1/ {print $3,$6,$8}'
得到的输出里数字带逗号,不符合你的需求:
host1 I 417,680,874 host1 I 18,466,159,904 host1 I 8,040,571,252
想要把数字里的逗号全部去掉,这里有几个简单好用的方法:
方法1:在awk里直接替换逗号(最推荐)
直接修改awk命令,用gsub()函数把数字字段里的逗号清空,一步到位:
echo "list joblog job=host1"|bconsole| awk -F"|" '/host1/ {gsub(/,/, "", $8); print $3, $6, $8}'
原理很简单:gsub(/,/, "", $8)会把第8个字段(也就是带逗号的数字列)里所有的逗号都替换成空字符串,之后再打印三个字段,就能得到你想要的格式啦。
方法2:用sed做后续处理
如果不想改动原有的awk逻辑,也可以把awk的输出再交给sed处理,全局删除所有逗号:
echo "list joblog job=host1"|bconsole| awk -F"|" '/host1/ {print $3,$6,$8}' | sed 's/,//g'
sed 's/,//g'会遍历每一行,把所有逗号都删掉,刚好适配你当前的输出场景。
方法3:多分隔符处理(可选,灵活性稍差)
还有一种思路是把逗号也当作字段分隔符,不过这种方法需要根据数字里的逗号数量调整字段拼接,不如前两种灵活,仅供参考:
echo "list joblog job=host1"|bconsole| awk -F"|,| " '/host1/ {print $3, $6, $9$10$11}'
内容的提问来源于stack exchange,提问作者anji
相关产品推荐
相关产品推荐

