ソースをフラットファイルにインポートし、キャリッジリターンと\ n ...特殊文字を削除しますか?

ソースをフラットファイルにインポートし、キャリッジリターンと\ n ...特殊文字を削除しますか?

\nPIPE区切り文字を含む多数のレコードを含むフラットファイルソースが提供され、フィールドの1つがキャリッジリターン(複数行)を受け取り、改行()で始まる問題が発生しました。それでは、\nファイルから文字を削除する方法は?

例:

-000123456|1654321|6/12/2002 8:49:20 AM|
tt Cynthia L Eggleston E456585 remove move the funds adv account in fcle flagged on 710091 pmt due 12-16- 15|

誰でも進行方法を提案できますか?

ベストアンサー1

\nすべてのレコードでフィールドがこのフィールドで始まることがわかっている場合は、sed次のように使用できます。

sed "N;s/|\n/|/"

新しい行を削除します。行区切り文字sedとして使用されるため、まず\n次の行をすでに処理されている行に接続し、Nプロセスのsedリンクされた行の間に改行文字を挿入する必要があります。

この問題がランダムに発生する場合(すべてのレコードで発生するわけではありません)、ファイルの内容を解析するためにより強力なツールを使用する必要があります。デフォルトではフィールド数を数える必要があります。または、awkこのトリックをエレガントに実行することもできます。 (私の考えperlでは、それも実行できるようですが、おそらく行きたくありません。)sedその方向)。

おすすめ記事