2016-08-18 8 views
1

私はこれを見ました:How can I replace a newline (\n) using sed?、私はと改行を置き換えるためにtrを使用しようと考えました。`tr`を使って改行をカンマで置き換えるには?

ファイルは次のようになります。

something 
newline 
newline again 

と私はそれが次のようになりたい:だから

something', 
newline', 
newline again', 

、私はこれらを試してみました:

tr "\n" "'," < myfileabove tr "\n" "\'," < myfileabove

どちらも私が好きなことはしません... .am私は何か間違っている?

+1

あなたの例が示すように、各行の最後に '、'? –

+0

私はsed: 'sed" s/$/'、/ "file'を使うことをお勧めします。 – Cyrus

答えて

2

trは、ある文字を別の文字に変換しますが、文字列にはマッピングされません。したがって、改行を文字列にマップすることはできません。 sedを使用しようとすると、理解できない、または移植性のない混乱が生じます。ただ、awkを使用します。上の

awk -v ORS="'," '1' file 

ハング - あなたの投稿の例では、あなたのようになり',で改行を置き換える表示されません。

$ awk -v ORS="'," '1' file 
something',newline',newline again',$ 

それはあなたがある各行の末尾に',を追加示しまったく別のもの。あなたはまだそのtrを行うことはできませんが、sedまたはawkでそれを行うことができます。a) `「、`テキストの状態としてまたはb)を追加 `で改行を置き換える:あなたがしたいです

$ sed 's/$/'\'',/' file 
something', 
newline', 
newline again', 

$ awk -v ORS="',\n" '1' file 
something', 
newline', 
newline again', 
+0

' awk'は大丈夫ですが、私は知っているツールを利用したいと思います。 'tr'を使ってそれを行う方法はありませんか? – Hunle

+0

いいえ、 'tr'は1つの文字を別の文字に変換するものですが、1つの文字を複数の文字列に変換したいとします。それぞれの仕事に適したツールを習得するのではなく、あなたが知っているツールに固執すれば、彼らが仕事のための正しいツールであるかどうかにかかわらず、ソフトウェアを書くことは非常に困難な時間になります。あなたは一生の時間を費やし、非効率的なバグのコード化のための短い学習曲線をトレードしています。 –

+1

@Hunleこれはあなたの質問に答えるもので、昨年+代替回答が投稿されていないので、次に何をするかはhttps://stackoverflow.com/help/someone-answersを参照してください。 –

関連する問題