特定の場所の特定の記号を除いて句読点を削除します。

特定の場所の特定の記号を除いて句読点を削除します。

私はtr、テキストを解析し、すべての単語を小文字に置き換え、句読点や複数のスペースを削除するなど、複数のタスクを実行するために使用します。最終結果は、特定の状況を除いて英数字のみを含むきれいな小文字のテキストでなければなりません。

word$digit

例えば

house$999

この状況を除いて、式は非常に簡単です。たとえば、句読点を削除する場合は、スペースで置き換えます。

tr '[:punct:]' ' '

目的の出力の残りの部分を取得するには、パイプを使用します。例えば、

tr '[:upper:]' '[:lower:]' < $1 | tr '[:punct:]' ' ' | ... > $2

しかし$、他のインスタンスや他のすべての句読点を削除している間に、数値セット間の英数字と記号が保持されるように例外を定義する方法を見つけることにはいくつかの問題があります。

ベストアンサー1

@xenoidの答えに基づいて、次のコードが私に効果的でした。

echo -e "Hello.\n;132\$And; Another\$98?';:" | sed -e 's/\([[:alpha:]]\+\)\$\([[:digit:]]\+\)/\1 THIS \2/g' -e 's/[[:punct:]]//g' -e 's/ THIS /$/g' | tr '[:upper:]' '[:lower:]'

結果:

hello
132and another$98

おすすめ記事