2017-09-25 12 views
0

以下の文字列がランダムに入力され、フィールドは〜$〜で区切られ、@#&で終わります。文字列内のブレークラインの問題の解決策が必要です

破線を1つにマージする際にお役立てください。以下の文字列で

入力した文字は、アドレスフィールドに発生している(4/79A)

-------スティング---------- 23510053〜$〜ABC〜$〜 4313708〜$ 19072017〜$ XYZ〜$〜CHINNUSAMY〜$ ~~ $〜R〜$ ~~ $ ~~ $ ~~ $〜42〜$ ~~ $ ~~ $ ~~ $ ~~ $〜28022017〜事前に$〜 4/79A PQRマーグ、ムンバイ4000001〜$〜TN〜$〜637301〜$〜は〜$〜のRATを所有〜$〜31102015〜$〜12345〜$〜@#&

感謝。 Rupesh

+0

AIXサーバーとInformaticaを使用してファイルをターゲットにロードしています。 – user4786658

答えて

0

(多かれ少なかれ)であるように思わhttps://stackoverflow.com/a/802439/3595749

ノートの複製、あなたは(むしろ以下のコードをaplyingより)CRLF記号を削除するには、あなたのクライアントに依頼する必要があります。

それにもかかわらず、この試してみてください。説明

cat inputfile | tr -d '\n' | sed 's/@#&/@#\&\n/g' >outputfile 

を:

  • tr
  • sedは(@#&がencountredされている場合のみ)再度追加することで、キャリッジリターンを削除することです。 s/@#&/@#\&\n/gは "@#&"を "@#&\n"(キャリッジリターンを追加し、 "&"をエスケープする必要があります)に置き換えます。これはグローバルに適用されます(最後の "g"文字)。ソース(UNIXまたはWindows)に依存

注意は、 "\nは" いくつかのケースでは "\r\n" に置き換える必要があります。

+0

親愛なるウィリアム、 返信いただきありがとうございます。今私の質問は私の最初の列に数字が含まれていると同時に、例えば204/7のようなアドレスが新しい行の文字の後に来る場合、最初の列に触れることなく行をマージする方法を教えてください 例: - 23510053〜$ 〜ABC〜$〜4313708〜$ 19072017〜$ XYZ〜$〜 204/7ムンバイ〜$〜 – user4786658

+0

あなたの意見は表示されません。私のコードはすべての行を結合して一意の行(trコマンド)を作成し、 "@#&"が見つかると(sedを使って)それを切り捨てます。数字とのリンクはありません(行の先頭かどうか)。あなたの住所は単一のフィールドになります。 –

+0

@#&inside "と一緒に' echo "文字列を試してみてください。 sedの/ @#&/ @#&\ n/g "です。 2番目の '&'には特別な意味があります。私はあなたが 'echo 'String with @#&inside" | sedの/ @#&/& n/g "です。 –

関連する問題