如何通过以下方式转换输入流的文本:跳过单字母单词。如果单词包含一个数字和一个字母,也应该省略。
我有一个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,则该单词(由$_
大括号内的主题变量表示)被print
ed ,后跟空格" "
。
在每行处理结束时,将打印一个换行符"".put
( ...put
表示使用终止符打印)。