Linux 正在对不带';不适合某一组给定的字符

Linux 正在对不带';不适合某一组给定的字符,linux,ubuntu,grep,Linux,Ubuntu,Grep,我想知道我怎样才能把所有不适合你想要的角色集的角色都变灰 例如,假设我有一个包含以下文本的文件 XXXXX0000000HelloXXXXXX MyXXXName0000Is00000000 XXXXXJamesXXX0X0X0X0XXX 我想让它打印出“HelloMyNameIsJames”或其他一些样式的字符(如果它以每行一个字符的形式打印出来,我可以接受) 任何帮助都将不胜感激! Raymosrunerx tr -d X0 < input 要删除线端,请执行以下操作: tr -

我想知道我怎样才能把所有不适合你想要的角色集的角色都变灰

例如,假设我有一个包含以下文本的文件

XXXXX0000000HelloXXXXXX
MyXXXName0000Is00000000
XXXXXJamesXXX0X0X0X0XXX
我想让它打印出“HelloMyNameIsJames”或其他一些样式的字符(如果它以每行一个字符的形式打印出来,我可以接受)

任何帮助都将不胜感激! Raymosrunerx

tr -d X0 < input 
要删除线端,请执行以下操作:

tr -d 'X0\n' < input 
(无尾线端)

要删除线端,请执行以下操作:

tr -d 'X0\n' < input 
(无尾随线端)

尝试:

sed -e 's/[X0]//g' input
grep
不会为您删除内容。

尝试:

sed -e 's/[X0]//g' input

grep
不会为您删除内容。

另一种解决方案,使用
grep
(如果您的
grep
支持
-o
):


另一种解决方案,每行一个字符,使用
grep
(如果您的
grep
支持
-o
):


如果这些行包含在文件testdata中,则以下命令将打印每行,如图所示:

sed -e 's/[0X]//g' testdata | xargs
Hello MyNameIs James

希望这能满足您的需求

如果这些行包含在文件testdata中,则以下命令将打印一行,如图所示:

sed -e 's/[0X]//g' testdata | xargs
Hello MyNameIs James

希望这能满足您的需求

如果您喜欢每行一个单词,这里有一种方法可以使用
GNU grep

grep -oP '(?<=[0X]|\b)[^0X]+(?=[0X]|\b)' file.txt
您可以使用
sed
整理输出:

< file.txt grep -oP '(?<=[0X]|\b)[^0X]+(?=[0X]|\b)' | sed ':loop; N; $!b loop; s/\n/ /g'

如果您喜欢每行一个单词,这里有一种使用
GNU grep
的方法:

grep -oP '(?<=[0X]|\b)[^0X]+(?=[0X]|\b)' file.txt
您可以使用
sed
整理输出:

< file.txt grep -oP '(?<=[0X]|\b)[^0X]+(?=[0X]|\b)' | sed ':loop; N; $!b loop; s/\n/ /g'

因此,在本例中,您希望消除X和0?因此,在本例中,您希望消除X和0?请参阅我对GNU
grep
解决方案的回答。请参阅我对GNU
grep
解决方案的回答。