Linux 如何使用SED删除第5个和第6个分隔符之间的值?

Linux 如何使用SED删除第5个和第6个分隔符之间的值?,linux,bash,shell,sed,Linux,Bash,Shell,Sed,删除5和6之间的值分隔符: 000000000000;00000000000000;2;NONE;true;526;246;101;100;2;1;;;;;;8;101/100.0000.99.99;526/125.000.122.000 我们需要: 000000000000;00000000000000;2;NONE;true;;246;101;100;2;1;;;;;;8;101/100.0000.99.99;526/125.000.122.000 使用awk可以执行以下操作: s='0

删除5和6之间的值分隔符:

000000000000;00000000000000;2;NONE;true;526;246;101;100;2;1;;;;;;8;101/100.0000.99.99;526/125.000.122.000
我们需要:

000000000000;00000000000000;2;NONE;true;;246;101;100;2;1;;;;;;8;101/100.0000.99.99;526/125.000.122.000

使用awk可以执行以下操作:

s='000000000000;00000000000000;2;NONE;true;526;246;101;100;2;1;;;;;;8;101/100.0000.99.99;526/125.000.122.000'

awk 'BEGIN{FS=OFS=";"} {$6=""} 1' <<< "$s"

000000000000;00000000000000;2;NONE;true;;246;101;100;2;1;;;;;;8;101/100.0000.99.99;526/125.000.122.000
s='000000000000;00000000000000;2.没有一个符合事实的526;246;101;100;2.1.8.101/100.0000.99.99;526/125.000.122.000'

awk'BEGIN{FS=OFS=“;”}{$6=”“}1'让我们将字符串定义为
s

$ s='000000000000;00000000000000;2;NONE;true;526;246;101;100;2;1;;;;;;8;101/100.0000.99.99;526/125.000.122.000'
要删除第六个字段,请执行以下操作:

$ echo "$s" | sed -E 's/(([^;]*;){5})[^;]*/\1/'
000000000000;00000000000000;2;NONE;true;;246;101;100;2;1;;;;;;8;101/100.0000.99.99;526/125.000.122.000
工作原理 我们使用单个sed替换命令:

s/(([^;]*;){5})[^;]*/\1/
这里,
(([^;]*;){5})
匹配前五个字段并将它们保存在组1中

[^;]*
匹配下面的字段。换句话说,它匹配第六个字段


替换文本仅为
\1
,表示第一组,即前五个字段。因此,第六个字段被删除而不被替换。

在SED上有人知道吗?对于
SED
使用这个:
SED-E的/^([^;]*;){5})[^;]*/\1/'您可以使用更好的标题,例如“如何使用SED删除分隔符之间的值”提示:您可以改为查看cat
cut