如何转换文本以删除只有一个字母的单词?

如何转换文本以删除只有一个字母的单词?

如何通过以下方式转换输入流的文本:跳过单字母单词。如果单词包含一个数字和一个字母,也应该省略。

我有一个Text1.txt文件并将转换后的文本重写到Text2.txt文件中。

Text1.txt包含:

I like to be at home alone.
Today I2 am alone at home and can rest.

Text2.txt 包含结果:

 like to be at home alone.
Today am alone at home and can rest.

该文本采用 ASCII 格式。

有几行,可能重复 é,不仅如此,它也不包含类型 111aaa。我使用 Ubuntu 的最新版本之一。

答案1

使用sed

$ sed -E 's/\<[[:alpha:]][[:digit:]]?\>//g' input_file
like to be at home alone.
Today  am alone at home and can rest.

答案2

使用(以前称为 Perl_6)

~$ raku -ne 'for .words() { print($_, " ") if .subst(:g, / \d /).chars > 1}; "".put;'  file

输入示例:

I like to be at home alone.
Today I2 am alone at home and can rest.

示例输出:

like to be at home alone. 
Today am alone at home and can rest. 

Raku 是 Perl 家族的一种编程语言。简而言之,使用熟悉的-ne非自动打印逐行标志读取行。

每行被分成以空格分隔的words,并且 [使用.subst(:g, / \d /)],如果每个单词的非\d数字chars在数值上大于 1,则该单词(由$_大括号内的主题变量表示)被printed ,后跟空格" "

在每行处理结束时,将打印一个换行符"".put( ...put表示使用终止符打印)。

https://raku.org
https://rakudo.org

相关内容