打印$0时如何删除awk中的字段分隔符?

打印$0时如何删除awk中的字段分隔符?,awk,field,separator,Awk,Field,Separator,例如,文件的每一行如下所示: 1, 2, 3, 4,..., 1000 如何打印 1 2 3 4 ... 1000 ?如果您只想删除逗号,可以使用tr: 如果您只想删除逗号,可以使用tr: 将FS设置为输入字段分隔符。然后,分配给$1将使用输出字段分隔符(默认为空格)重新格式化字段: awk -F',\s*' '{$1 = $1; print}' 有关将FS设置为输入字段分隔符的$1=$1的说明,请参见。然后,分配给$1将使用输出字段分隔符(默认为空格)重新格式化字段: awk -F',\

例如,文件的每一行如下所示:

1, 2, 3, 4,..., 1000
如何打印

1 2 3 4 ... 1000

如果您只想删除逗号,可以使用tr:


如果您只想删除逗号,可以使用tr:

将FS设置为输入字段分隔符。然后,分配给$1将使用输出字段分隔符(默认为空格)重新格式化字段:

awk -F',\s*' '{$1 = $1; print}'
有关将FS设置为输入字段分隔符的$1=$1的说明,请参见。然后,分配给$1将使用输出字段分隔符(默认为空格)重新格式化字段:

awk -F',\s*' '{$1 = $1; print}'

有关$1=$1的说明,请参见。您需要设置输出字段分隔符。不幸的是,除非您也修改字符串,否则这没有任何效果,导致相当神秘的:

awk '{$1=$1}1' FS=, OFS=
尽管如此,如果您对添加一些额外的空间感到满意,您可以将OFS的默认值保留为单个空间,并执行以下操作:

awk -F, '{$1=$1}1'
如果您不介意在输出中省略空行,可以进一步简化为:

awk -F, '$1=$1'

您需要设置输出字段分隔符。不幸的是,除非您也修改字符串,否则这没有任何效果,导致相当神秘的:

awk '{$1=$1}1' FS=, OFS=
尽管如此,如果您对添加一些额外的空间感到满意,您可以将OFS的默认值保留为单个空间,并执行以下操作:

awk -F, '{$1=$1}1'
如果您不介意在输出中省略空行,可以进一步简化为:

awk -F, '$1=$1'

还可以删除字段分隔符:

awk -F, '{gsub(FS,"")} 1'

还可以删除字段分隔符:

awk -F, '{gsub(FS,"")} 1'

@巴默,它不起作用了。我用这个测试:echo 1,2,3,4 | awk-F',“{$0=$0;print}”。@sat this works echo 1,2,3,4 | awk-F',“{$1=$1}1”。我猜这是Barmar的错别字,应该是$1=$1或NF=NF等,而不是$0=$0@Jotne对但是怎么做呢$1表示第一个字段。@sat$1=$1使其重新生成整个字段$0@Jotne哦对我明白了@巴默,它不起作用了。我用这个测试:echo 1,2,3,4 | awk-F',“{$0=$0;print}”。@sat this works echo 1,2,3,4 | awk-F',“{$1=$1}1”。我猜这是Barmar的错别字,应该是$1=$1或NF=NF等,而不是$0=$0@Jotne对但是怎么做呢$1表示第一个字段。@sat$1=$1使其重新生成整个字段$0@Jotne哦对我得到了它!警告:最后一个示例省略的不仅仅是空行。第一个字段为0的任何行也将被过滤。最好忽略最后一个简化。警告:最后一个示例忽略的不仅仅是空行。第一个字段为0的任何行也将被过滤。也许最好忽略最后的简化。谢谢你的回答!我试过awk-F,{gsubFS,}1',效果很好。谢谢你的回答!我试过awk-F,{gsubFS,}1',效果很好。