\n
PIPE区切り文字を含む多数のレコードを含むフラットファイルソースが提供され、フィールドの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
その方向)。