trを使用して、各行に1語が含まれるようにtxtファイル形式を再指定します。

trを使用して、各行に1語が含まれるようにtxtファイル形式を再指定します。

句読点、数字、大文字をすべて削除し、1行に単語が1つだけ含まれるようにファイルを変更したいと思います。例:
こんにちは、元気にしてください!

どうやって
過ごすか

少し助けて、私はこれを思い出しました。

tr -d '[:punct:]' < file | tr -s '[:space:]' '\n' | tr -d '[0-9]' | tr '[A-Z]' '[a-z]' > cleanfile.txt

しかし、問題は、私のファイルにアドレスがあるときに代わりにhttpadresscomで終わるということです。

http  
adress  
com 

また、「don't」や「readme.txt」などの単語にこの出力を持たせたくありません。

don  
t  
readme  
txt

答え1

これにより、中にドットと引用符のみを残し、すべての単語を分離する必要があります。下線はおそらく望ましくないでしょう。それでは\wうまくいきません。

]# grep -oE "(\w|\.\w|'\w)*" text
one
two
Three
four
linux
file
system
isn't
What
nothing
mailto
a.b
some.org
Molly's
cat
Wrote
a
readme.txt

1つまたは2つ。 34Linuxのファイルシステムとは何ですか? 「何もありません」メール宛先: [Eメール保護]モリーの猫。 readme.txt を書きました。

問題はtr必要最小限のコンテキストです。ここではsome.org分割したいのでついていますが、readme.txtそうではありません。今「@」は消えた。

答え2

最初の部分では、句読点を削除せずにスペースに変換します。

2番目の場合(待たないでください):単語辞書が必要な場合や'sを削除しない場合があります。

関連情報