Shell 使用awk或sed添加空白列

Shell 使用awk或sed添加空白列,shell,unix,awk,sed,Shell,Unix,Awk,Sed,我有一个具有以下结构的文件(逗号分隔) 我想在第四个字段中添加一个空白列,使其成为 116,1,89458180,,17,FFFF,0403254F98 如果可能,关于如何使用awk或sed执行此操作的任何输入 谢谢你echo 116,189458180,17,FFFF,0403254F98 | awk-F',“{print$1”,“$2”,“$3”,“$4”,“$5”,“$6}”你可以使用这个awk awk -F, '$4="," $4' OFS=, yourfile (或) 如果要添加第

我有一个具有以下结构的文件(逗号分隔)

我想在第四个字段中添加一个空白列,使其成为

116,1,89458180,,17,FFFF,0403254F98
如果可能,关于如何使用awk或sed执行此操作的任何输入


谢谢你

echo 116,189458180,17,FFFF,0403254F98 | awk-F',“{print$1”,“$2”,“$3”,“$4”,“$5”,“$6}”
你可以使用这个
awk

awk -F, '$4="," $4' OFS=, yourfile
(或)

如果要添加第6和第8个字段

awk -F, '{$4=FS$4; $1=FS$1; $6=FS$6}1' OFS=, yourfile

通过awk

$ echo '116,1,89458180,17,FFFF,0403254F98' | awk -F, -v OFS="," '{print $1,$2,$3,","$4,$5,$6}'
116,1,89458180,,17,FFFF,0403254F98
  • 它在第三个字段(由
    分隔)后打印
通过GNU sed

$ echo 116,1,89458180,17,FFFF,0403254F98| sed -r 's/^([^,]*,[^,]*,[^,]*)(.*)$/\1,\2/'
116,1,89458180,,17,FFFF,0403254F98
$ echo 116,1,89458180,17,FFFF,0403254F98| sed 's/^\([^,]*,[^,]*,[^,]*\)\(.*\)$/\1,\2/'
116,1,89458180,,17,FFFF,0403254F98
  • 它捕获第三个命令之前的所有字符,并将其存储到一个组中。包括第三个
    到最后一个的字符存储到另一个组中。在替换部分中,我们只需在这两个捕获的组之间添加一个
    。 通过基本sed
通过基本sed

$ echo 116,1,89458180,17,FFFF,0403254F98| sed -r 's/^([^,]*,[^,]*,[^,]*)(.*)$/\1,\2/'
116,1,89458180,,17,FFFF,0403254F98
$ echo 116,1,89458180,17,FFFF,0403254F98| sed 's/^\([^,]*,[^,]*,[^,]*\)\(.*\)$/\1,\2/'
116,1,89458180,,17,FFFF,0403254F98
非awk

t="116,1,89458180,17,FFFF,0403254F98"
echo $(echo $t|cut -d, -f1-3),,$(echo $t|cut -d, -f4-)

您可以使用下面的awk命令来实现这一点。将$3替换为您想要使其为空的列

awk-F,“{$3=”“FS$3;}1”OFS=,文件名

sed -e 's/\([^,]*,\)\{4\}/&,/' YourFile

将4[content(non-comma)than comma]的序列本身替换为逗号,然后再加上一个逗号

假设所有字段都不包含嵌入的逗号,则可以将任务重述为将第三个逗号替换为两个逗号。这只是:

sed 's/,/,,/3'
使用文件中的示例行:

$ echo "116,1,89458180,17,FFFF,0403254F98" | sed 's/,/,,/3'
116,1,89458180,,17,FFFF,0403254F98

您可以使用这个
awk-F,'$4=FS$4'OFS=,file
如果我想添加更多的空白记录如何?例如,我想添加第6和第8个字段?@user3003001您想在第6和第8个字段上添加
?我想用
awk
编写一个类似的命令。但我不知道文件中有多少列。如何寻址awk命令以指向最后一列?