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
- 它在第三个字段(由
分隔)后打印,
,
$ 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,
$ 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命令以指向最后一列?