Linux 如何使用SED删除第5个和第6个分隔符之间的值?
删除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
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删除分隔符之间的值”提示:您可以改为查看catcut