最後を除くすべての改行をスペースに置き換えます


38

最後の改行を除くすべての改行をスペースに置き換えるにはどうすればよいですか。を使用してすべての改行をスペースに置き換えるtrことができますが、いくつかの例外を除いてどのように行うことができますか?

回答:


42

以下を使用できますpaste -s -d ' ' file.txt

$ cat file.txt
one line
another line
third line
fourth line

$ paste -s -d ' ' file.txt 
one line another line third line fourth line

1
クール!-sおよび-dオプションは、このような場合のために作られたように見えます。
mkc 14

10

を使用trして、すべての改行をスペースに置き換え、出力を渡しsed、最後のスペースを改行に戻すことができます。

tr '\n' ' ' < afile.txt | sed '$s/ $/\n/'

5

ファイルが十分に小さい場合、vonbrandのアイデアをPerlで再実装します。

perl -p00e 's/\n(?!\Z)/ /g' your_file

+1(この方法は、(GNUペーストとは対照的に)マルチバイト文字での置換に対して機能するため)
myrdd


-1

これは私のために働いた。

tr '\n' ' ' < file_with_new_line   | sed 's/\ $//g' > file_with_space

これにより、最後の改行も削除されます。
テルドン

私はそうは思わない、それはうまく働いている。本当に試してみましたか???
アビジット

はい、持っています。あなたは?あなたのtrコマンドは置き換えられ、すべてのスペースと改行をし、あなたのsedコマンドは、最後のスペースを削除します。これにより、最終改行のないファイルが作成されるため、質問の対象とはなりません。ちなみに、コマンドで使用gするポイントintはありませんsed。を使用しているので$、最後でのみ一致することができ、これgは無意味です。また、スペースをエスケープする必要はありません。「」でも違いはありません。
テルドン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.