2016-07-12 71 views
-2

我有一個文件包含\ n隱藏每一行後面:刪除 n和保持空間的Linux

輸入:

s3741206\n 
s2561284\n 
s4411364\n 
s2516482\n 
s2071534\n 
s2074633\n 
s7856856\n 
s11957134\n 
s682333\n 
s9378200\n 
s1862626\n 

我想刪除\ n後面

所需的輸出:

s3741206 
s2561284 
s4411364 
s2516482 
s2071534 
s2074633 
s7856856 
s11957134 
s682333 
s9378200 
s1862626 

不過,我試試這個:

TR -d '\ n' <文件1>文件2

,但它會像下面沒有空間和新的生產線 s3741206s2561284s4411364s2516482s2071534s2074633s7856856s11957134s682333s9378200s1862626

我也嘗試SED $的/ \ n // g^'-i file1,它在mac os中不起作用。

謝謝。

+0

輸入的每一行是由一個換行符結尾,還是由一個實際的\後跟一個n?如果你的意思是換行符,那麼你希望的輸出與你的輸入有什麼不同? – Brandin

+0

要明確的是,實際上是兩個字符\和n或單個換行符? – Droppy

+0

txt文件是從Windows和我不能在OS或Linux工作,有一些不同,我使用od -c文件1,我看到有\ n但沒有\ r所以我不知道這是問題 –

回答

2

這是使用sed一個可能的解決方案:

sed 's/\\n/ /g' 
-1

你可以使用bash的本地字符串替換

$ cat /tmp/newline 
s3741206\n 
s2561284\n 
s4411364\n 
s2516482\n 
s2071534\n 
s2074633\n 
s7856856\n 
s11957134\n 
s682333\n 
s9378200\n 
s1862626\n 

$ for LINE in $(cat /tmp/newline); do echo "${LINE%\\n}"; done 
s3741206 
s2561284 
s4411364 
s2516482 
s2071534 
s2074633 
s7856856 
s11957134 
s682333 
s9378200 
s1862626 
+0

閱讀[爲​​什麼使用shell循環處理文本考慮糟糕的做法](http://unix.stackexchange.com/questions/169716/why-is-using-a-外殼環到過程文本視爲壞實踐)。 –

+1

我欣賞評論。這種聯繫是一個非常好的解釋。 –

+0

是的,UNIX shell只是一個環境,可以使用一種語言來調用UNIX工具來排序這些調用(而不是用於操縱文本的語言),因此對於簡單的文本操作shell,只需調用tr,grep,cut,sed等,更復雜的東西(例如,當需要循環時)shell只是調用awk。 –

1

awk

awk '{sub(/\\n/,"")} 1' <file1> file2 
+0

更好的是:'awk -F'\''{print $ 1}'file1> file 2' – Yaron

0

什麼你至今在描述你的問題+評論沒有意義。你怎麼能在每行的末尾有一個帶有隱藏換行符的多行文件?您顯示爲輸入文件是什麼:

s3741206\n 
s2561284\n 
s4411364\n 
etc. 

其中每個「\ n」,根據您的評論以上a single newline character "\n"是不可能的。如果這些「\ n」 S是換行字符,那麼你的文件將只是看起來像:

s3741206 

s2561284 

s4411364 

etc. 

有真的只有2個可能,我能想到的:

  1. 您錯誤地解釋你所看到的你的輸入文件 和/或使用錯誤的術語,你實際上在每行的末尾都有\r\n 。運行cat -v file看到\r S作爲 ^M S和運行dos2unix或相似(如sed 's/\r$//' file)以 刪除\r秒 - 你不想刪除\n S或你會 不再有POSIX文本文件等POSIX在其上運行時,工具將展示 未定義的行爲。如果這不適合你, 將cat -v file的輸出複製/粘貼到你的問題中,所以我們可以 確定你的文件中有什麼。

或者:

  • 它也完全有可能是你的文件是一個完全正常的POSIX 文本文件,是和你錯誤地認爲你將有一個 問題出於某種原因,所以在你的問題中也包括一個 你遇到的實際問題的描述,包括你正在執行的命令的 的例子以及你得到的輸出 以及你期望得到的輸出。