2017-09-25 53 views
0

我有下面的字符串,它隨機輸入字符,字段以〜$〜分隔,並以@結尾#&。需要字符串中斷行問題的解決方案

請幫我合併一條虛線。

在下面的字符串輸入字符在地址字段發生(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

注意,你應該問你的客戶,除去CRLF標誌(而不是aplying下面的代碼)。

然而,試試這個:

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 Mumbai〜$〜 – user4786658

+0

我沒有看到你的觀點。我的代碼加入所有行以提供一個唯一的行(tr命令),然後在找到「@#&」時剪切它(使用sed)。沒有與數字的鏈接(在一行的開頭或沒有)。您的地址將是單個字段。 –

+0

用@#&在「|」中嘗試'echo「字符串sed's/@#&/ @#&\ n/g''。第二個'&'有一個特殊的含義:用所有匹配的字符替換字符。我認爲你想'回聲'字符串與@#&內「| sed's/@#&/&\ n/g''。 –