Unixファイルの行末から特殊文字を削除する

Unixファイルの行末から特殊文字を削除する

区切り記号があり、~@~~@~時には 。したがって、ファイルのデータは次のようになります。~@~~@~~@~~@~~@~

ABC~@~~@~TUV~@~~@~XYZ~@~PQR~@~13470~@~Management~@~Non-Employee IJK~@~T~@~12345~@~12345~@[email protected]~@~B~@~~@~~@~~@~6789~@~09/25/2017 11:31:22.000000~@~09/25/2017 3:22:03.000000~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~~@~\n

「最後の日付」フィールドから「行末」までの文字を削除する必要があります。私はこれを試しましたが、sed 's/~@~~@~~@~\n*//g' File name>Replacedfilename.txt最後に特殊文字セットが保持されます。

ベストアンサー1

... | sed 's/\(~@~\)*$//'

行末を任意の数だけ削除します~@~(もちろん、\n例の行末がリテラルバックスラッシュと小文字Nではなく行末の改行を表すと仮定します)。

または、拡張正規表現をサポートするsでは、次のようになりますsed-E

... | sed -E 's/(~@~)+$//' 

あるいは、awk -F'~@~'必要なフィールドを同時に使用して処理することもできます。

おすすめ記事