Unix 如何从输出中省略特定的逗号?

Unix 如何从输出中省略特定的逗号?,unix,awk,sed,scripting,Unix,Awk,Sed,Scripting,我想用awk/sed格式化输出,但我不知道如何做。我正在使用以下命令: uptime | awk '{print $1" " $2" " $3$4" " $6" " $10$11$12}' 15:36:17 up 177days, 7 0.39,0.43,0.36 我期望的输出是 15:36:17 up 177days 7 0.39,0.43,0.36 我只想省略第一个逗号,即“177天”之后的逗号。使用sub(用空字符串替换逗号)或substr(使用除最后一个字符以外的所有字符创

我想用awk/sed格式化输出,但我不知道如何做。我正在使用以下命令:

uptime | awk '{print $1" " $2" " $3$4" " $6" " $10$11$12}' 
15:36:17 up 177days, 7 0.39,0.43,0.36  
我期望的输出是

15:36:17 up 177days 7 0.39,0.43,0.36  

我只想省略第一个逗号,即“177天”之后的逗号。

使用
sub
(用空字符串替换逗号)或
substr
(使用除最后一个字符以外的所有字符创建子字符串):


尝试将命令的输出管道化到一个
sed
,该sed将匹配任何后跟逗号的字母字符,并将其替换为该字符:

uptime | awk '{sub(",","",$4); print $1" " $2" " $3$4" " $6" " $10$11$12}'

uptime | awk '{print $1" " $2" " $3 substr($4,1,length($4)-1) " " $6" " $10$11$12}'
uptime | awk '{print $1" " $2" " $3$4" " $6" " $10$11$12}' | sed -r 's/(\w),/\1/'

谢谢@jas
uptime | awk'{sub(“,”,“,”,$4);打印$1“$2“$3$4”$6“$10$11$12}”
它工作得很好。但是,第二个命令在我的机器上不起作用。嗯,对我来说,它同时适用于
awk
gawk
——发生了什么?您是否收到错误或意外输出?它是空白输出,没有显示任何内容。@jas你说abt'gawk',第二个命令是用于gawk的吗?这里没有特定于gawk的命令(我在MacOSX上使用的是普通的awk)。奇怪的是,你不会得到任何输出和错误。你完全是根据答案复制粘贴的?没有遗漏任何开盘或收盘报价?(很抱歉问这么明显的问题,但这确实是个谜。)是的@jas,我完全按照答案粘贴了……但没有得到任何输出。谢谢@lelkadi,它也工作得很好。由于我是新来这里的,你能从这个
sed-r/(\w),/\1/'向我解释一下
\w
\1
吗?这肯定会对我有很大帮助。
\w
匹配任何单词字符,而且由于要嵌入到
()
中,匹配项将被捕获为组号1,并且可以使用
\1
访问。因此,上面的正则表达式匹配一个单词字符,后跟一个逗号
,然后用捕获的字符替换它们。谢谢@lelkadi的解释。