区切り記号があり、~@~~@~
時には 。したがって、ファイルのデータは次のようになります。~@~
~@~~@~
~@~~@~
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'~@~'
必要なフィールドを同時に使用して処理することもできます。
答え2
上記のデータがファイルにあるとしますf1.txt
。 sedコマンドを使用して~@~~@~
sumエントリをすべて削除できます~@~
。スペースに置き換えました。
sed -e 's/~@~~@~/#/g;s/~@~/#/g;s/# */ /g' f1.txt > output.txt
結果
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
答え3
cat file |sed 's/~@~~@~~@~//g' |sed 's/~@~$//'
最初のsedは文字列を削除し~@~~@~
、2番目のsedは最後の文字列を削除します。~@~