如何使用awk或sed删除多个元字符

如何使用awk或sed删除多个元字符,awk,sed,tr,Awk,Sed,Tr,我正在尝试使用sed、awk或tr或任何方便但快速的实用工具从mu命令行输出中删除一些元字符或特殊字符。此外,在我的级别上,我尝试了一些技巧,这些技巧虽然有效,但添加了多个命令。。正是我在下面得到的 1第一个是命令产生的确切输出 $ getent netgroup login_access_foxone login_access_foxone (-,cacti,) (-,multi,) (-,hipot,) (-,jack,) 下面是sed,它与awk相结合,以产生所需的输出 $ gete

我正在尝试使用sed、awk或tr或任何方便但快速的实用工具从mu命令行输出中删除一些元字符或特殊字符。此外,在我的级别上,我尝试了一些技巧,这些技巧虽然有效,但添加了多个命令。。正是我在下面得到的

1第一个是命令产生的确切输出

$ getent netgroup login_access_foxone 
login_access_foxone  (-,cacti,) (-,multi,) (-,hipot,) (-,jack,)
下面是sed,它与awk相结合,以产生所需的输出

$ getent netgroup login_access_foxone | sed 's/login_access_onefarm//g' | sed 's/)/\n/g' | awk 'BEGIN {FS=","}{print $2}' | grep -v ^$
cacti
multi
hipot
jack
3下一个使用tr命令,但必须再次使用cut获得输出

$ getent netgroup login_access_foxone | tr -d '(' | tr ')' '\n' | cut -d, -f2
cacti
multi
hipot
jack
4这是awk,但又分为两部分

$ getent netgroup login_access_foxone | awk -v FS="[()]" '{for (i=2;i<=NF;i+=2) print $i }' | awk -F, '{print $2}'
cacti
multi
hipot
jack
6尝试使用一些难看的组合进行sed,但存在包含空格的输出问题

$ getent netgroup login_access_foxone | sed 's/[-,()]/\n/g'
login_access_foxone


cacti




multi




hipot




jack
我的想法是用下面的代码删除空行,但我需要用另一个管道进行sed

$ getent netgroup login_access_foxone | sed 's/[-,()]/\n/g'|sed '/^\s*$/d'
救命啊

$ awk -F, '{for(i=2;i<=NF;i+=2) print $i}' file
cacti
multi
hipot
jack
在第二种选择中,我们将每一行分割成以逗号分隔的小记录。由于必填字段位于两个逗号之间,我们将打印偶数记录,这意味着记录编号可以被2整除。秩序自然地被保留了下来,没有什么意外。

啊,救命啊

$ awk -F, '{for(i=2;i<=NF;i+=2) print $i}' file
cacti
multi
hipot
jack

在第二种选择中,我们将每一行分割成以逗号分隔的小记录。由于必填字段位于两个逗号之间,我们将打印偶数记录,这意味着记录编号可以被2整除。顺序自然地保留下来,这并不奇怪。

您可以尝试这个sed,但与awk相比,它相当冗长:

sed 's/[^(]*(-,\([^,]*\),)/\1\n/g;s/\n$//' file

您可以尝试此sed,但与awk相比,它相当冗长:

sed 's/[^(]*(-,\([^,]*\),)/\1\n/g;s/\n$//' file

我能想到的最短解决方案是:

grep-Po',\K\w*'

例如:

说明:

\K:看看后面

\w:[a-zA-Z_]


*:任意数量的匹配

我能想到的最短解决方案:

grep-Po',\K\w*'

例如:

说明:

\K:看看后面

\w:[a-zA-Z_]


*:任意数量的匹配项

@karakafa您出色地维持了订单,并按预期工作,您能解释一下您发布的第二个awk代码吗。我会回答的。。尽管只是查看其他sed&tr版本,由专家进行整理。@karakafa您出色地保留了订单,并按预期工作,您能否解释您发布的第二个awk代码。我会回答的。。尽管只是看看其他sed&tr版本,由专家进行整理。
grep -Po ',\K\w*'  <<< 'login_access_foxone  (-,cacti,) (-,multi,) (-,hipot,) (-,jack,)'
cacti
multi
hipot
jack