
単一文字の単語をスキップして入力ストリームのテキストを変換する方法。単語に数字と文字が含まれている場合は、この単語も省略する必要があります。
ファイルがあり、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つを使用しています。
答え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
のことを意味します。ターミネーターを使用した印刷)。