我想知道如何将所有不符合你想要的字符的字符格式化。
例如,假设我有一个包含以下文本的文件
XXXXX0000000HelloXXXXXX
MyXXXName0000Is00000000
XXXXXJamesXXX0X0X0X0XXX
我希望它以某种其他方式打印出“HelloMyNameIsJames”或那些字符(如果它每行出现一个字符,我会很好)。
任何帮助将不胜感激! Raymosrunerx
答案 0 :(得分:1)
tr -d X0 < input
输出:
Hello
MyNameIs
James
也要删除行尾:
tr -d 'X0\n' < input
输出
HelloMyNameIsJames
(没有尾随行结束)
答案 1 :(得分:1)
另一个解决方案,每行一个字符,使用grep
(如果您的grep
支持-o
):
grep -o '[^X0]'
答案 2 :(得分:1)
如果行包含在文件testdata中,则以下命令将打印一行,如下所示:
sed -e 's/[0X]//g' testdata | xargs
Hello MyNameIs James
希望这能满足您的需求!
答案 3 :(得分:1)
如果您更喜欢每行一个字,这是使用GNU grep
的一种方式:
grep -oP '(?<=[0X]|\b)[^0X]+(?=[0X]|\b)' file.txt
结果:
Hello
My
Name
Is
James
您可以使用sed
来消除输出:
< file.txt grep -oP '(?<=[0X]|\b)[^0X]+(?=[0X]|\b)' | sed ':loop; N; $!b loop; s/\n/ /g'
结果:
Hello My Name Is James
答案 4 :(得分:0)
尝试:
sed -e 's/[X0]//g' input
grep
不会为您删除内容。