2016-08-19 13 views
3

改行で区切られたファイルを以下のように1行に変換するにはどうすればよいですか?複数行の文字列を1つの改行で区切られた文字列に変換する

blah\nblah 
+1

あなたがしたいです:あなたが唯一のシェルコマンドを使用する場合ので、私は唯一のタグがbashのあることに気づいた

:UPDATE

sed ':a;{N;s/\n/\\n/};ba' file 

:私は他のソリューションをお勧めします行間の '\ n 'はリテラルですか? – anubhava

答えて

0

複数の選択肢は、sedのためにパイプ:

のawkを

awk 1 ORS='\\n' file | sed 's/..$//' 

たPerl:

perl -p -e 's/\n/\\n/' file | sed 's/..$//' 

は、ちょうど他のポストで述べたようsedの中でそれを行う方法もあり

をsedの。しかし、この:

sed ":a;N;$!ba;s/\n/\\n/g" file 

baから始まる最後のシェルコマンドにいくつかのシステムで展開される可能性があります$!baとして動作しない場合があります。

IFS=$'\n' 
last=$(<file wc -l) 
cnt=0 
while IFS= read -r line ; do 
    cnt=$[$cnt +1] 
    if [ $cnt -eq $last ] 
    then 
     printf "%s" "$line" 
    else 
     printf "%s" "$line\\n" 
    fi 
done < file 
関連する問題