区切り文字の前のテキストを削除する方法は?

区切り文字の前のテキストを削除する方法は?

テキストファイルのすべての行から区切り文字の);前後のテキストを削除するのに役立ちます。|つまり:

 SUBSCIBER_MSISDN=6289666195060');BEGIN DBMS_LOCK.SLEEP(5); END-- rKSy|

結果は次のようになります

SUBSCIBER_MSISDN=6289666195060|

このセクションを削除する方法をご存知ですか?これは大きなファイルです。

ぜひ使用しなければならないと狂っていると思いますsed

ベストアンサー1

一部の入力ファイルの行全体を表示するとします。

sed "s/'.*/|/" file >newfile

'これにより、各行の最初の文字の後のすべての内容が1文字|に置き換えられます。結果はリダイレクトを介して新しいファイルに書き込まれます。sed一重引用符で囲まれた文字列には一重引用符文字を含めることはできないため、式の周囲に二重引用符を使用しています。

サンプルデータが与えられると、これは次のようになります。

 SUBSCIBER_MSISDN=6289666195060|

行の先頭でも空白を削除したい場合(あなたの例ではこれを行うようです):

sed -e "s/'.*/|/" -e 's/^[[:blank:]]*//' file >newfile

または、

sed "s/'.*/|/; s/^[[:blank:]]*//" file >newfile

逆重複している場合は、次を使用して同じ変換を実行sedできます。awk

awk '{ sub("'"'"'.*", "|"); sub("^[[:blank:]]*", ""); print }' file >newfile

ファンキーな形は引用された一重'"'"'引用符です。awkコードを構成する一重引用符文字列の外側では、二重引用符で囲む必要があります。私達はまた利用できます'\''

awk '{ sub("'\''.*", "|"); sub("^[[:blank:]]*", ""); print }' file >newfile

あるいは、単一引用符文字に8進数のASCIIコードを使用することもできます。

awk '{ sub("\047.*", "|"); sub("^[[:blank:]]*", ""); print }' file >newfile

おすすめ記事