Regex 使用[:word:]删除单词时给出的字符类名称无效

Regex 使用[:word:]删除单词时给出的字符类名称无效,regex,unix,ubuntu,sed,Regex,Unix,Ubuntu,Sed,我正在运行这个sed命令: sed -e 's/\/[[:word:]]+//g' *.csv 在*.csv文件中,我有如下内容: name/name, val1, val2 name2/name2, val3, val4 etc 我想删除一个名称和/,以便获得名称,val1,val2。。。。 但我得到了这个错误: sed: -e expression #1, char 18: Invalid character class name 我使用的是Ubuntu 16.04sed支持。POSI

我正在运行这个
sed
命令:

sed -e 's/\/[[:word:]]+//g' *.csv
*.csv
文件中,我有如下内容:

name/name, val1, val2
name2/name2, val3, val4
etc
我想删除一个
名称
/
,以便获得
名称,val1,val2
。。。。 但我得到了这个错误:

sed: -e expression #1, char 18: Invalid character class name

我使用的是Ubuntu 16.04

sed
支持。POSIX没有定义字符类
[:word:
,因此也没有
sed

可以使用以下命令:

sed 's~/[[:alnum:]]\{1,\}~~' file

它使用字符类
[:alnum::
,它匹配字母和数字。您使用的
+
量词在POSIX正则表达式中不存在。您需要使用
\{1,\}
来表示一个或多个。sed支持。POSIX没有定义字符类
[:word:
,因此也没有
sed

可以使用以下命令:

sed 's~/[[:alnum:]]\{1,\}~~' file

它使用字符类
[:alnum::
,它匹配字母和数字。您使用的
+
量词在POSIX正则表达式中不存在。您需要使用
\{1,\}
来表示一个或多个字符。

没有名为
[:word::
的字符类,因此会出现有关无效字符类名称的错误消息

假设您正在尝试从输入中删除
/name
部分,如果这样做:

sed -E 's_/[^,]*__' file.csv
这里我们使用了
\uu
作为
sed
s
(替换)运算符分隔符

示例:

% sed -E 's_/[^,]*__' <<<'name/name, val1, val2'
name, val1, val2

%sed-E的\/[^,]*.\'没有名为
[:word:::
的字符类,因此出现有关无效字符类名称的错误消息

假设您正在尝试从输入中删除
/name
部分,如果这样做:

sed -E 's_/[^,]*__' file.csv
这里我们使用了
\uu
作为
sed
s
(替换)运算符分隔符

示例:

% sed -E 's_/[^,]*__' <<<'name/name, val1, val2'
name, val1, val2

%sed-E's_/[^,]*.您也可以使用
cut
awk
进行此操作,前提是您要删除行中的所有内容,包括
/

$ cat ip.txt 
name/name, val1, val2
name2/name2, val3, val4

$ cut -d/ -f2 ip.txt 
name, val1, val2
name2, val3, val4

$ awk -F/ '{print $2}' ip.txt 
name, val1, val2
name2, val3, val4

您也可以使用
cut
awk
进行此操作,前提是您要从行中删除所有内容,包括
/

$ cat ip.txt 
name/name, val1, val2
name2/name2, val3, val4

$ cut -d/ -f2 ip.txt 
name, val1, val2
name2, val3, val4

$ awk -F/ '{print $2}' ip.txt 
name, val1, val2
name2, val3, val4