テキストファイル内のすべての空白をカンマで置き換えます


10

テキスト内のすべての空白をカンマで置き換える必要があります。私は現在この行を使用していますが、機能しません。元のファイルとまったく同じテキストファイルを出力として取得します。

sed 's/[:blank:]+/,/g' orig.txt > modified.txt

ありがとう


sed 's / [[:blank:]] \ + /、/ g'
mug896

@ mug896はUbuntu 18.04で私のために機能しました。+の前に二重の角括弧と\が必要でした
dmontaner

回答:


15

sed

sed -e 's/\s\+/,/g' orig.txt > modified.txt

またはperl

perl -pne 's/\s+/,/g' < orig.txt > modified.txt

編集: perlで改行を除外するには、ダブルネガティブを使用する's/[^\S\n]+/,/g'か、選択した空白文字のみと照合します's/[ \t\r\f]+/,/g'


おかげで、まだ問題があります。「次の行\ n」をコンマで置き換えたくないので、perlを使用したコマンドが現在実行しています。彼女はあなたが書いたコマンドを送った、それはまだ機能しません。
動脈瘤

+sedで演算子をエスケープする必要があります。申し訳ありませんが、私の答えを更新しました。改行はperlのwhitepsaceであるため、含まない場合は手動でwhitepsaceクラスを実行する必要があります。私はそのための2つのソリューションをwelとして追加しました。
カレブ

13

使用tr

tr -s '[:blank:]' ',' <file

これにより、水平方向の空白がカンマに置き換えられます。繰り返される空白は、単一のカンマでのみ置き換えられます。


-1
awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 

ここでは、ファイル名はServersです。以下のコンテンツが含まれています。

Server1
Server2
Server3

上記のコマンドを使用すると、以下の出力が得られます。

Server1,Server2,Server3,


[mohramak@oc3246038448 Desktop]$ cat Servers
Server1
Server2
Server3
[mohramak@oc3246038448 Desktop]$ awk '{print $1","}' Servers | tr -d '[\n]' | xargs echo 
Server1,Server2,Server3,
[mohramak@oc3246038448 Desktop]$ 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.