2017-11-03 6 views
0

を私は-ですべてのスペースを交換し、ラインを例とすべてのスペースを置き換え " - "

asd asdため、-はbashでsedを使用して含まれている場合だけのスペースを削除したい - >asd-asd
asd - asd - >asd-asd

最初の行は囲まれ、すべてのダッシュを変換

$ sed '{ 
    s/ *- */-/g; 
    s/ \+/-/g; 
}' input_file_name > output_file_name 

答えて

1

あなたは、スペースやダッシュを一致させるとことで置き換えることができます単一のダッシュ:

s/[ -]\+/-/g 
0

私は2つのsedの行を使用する場合がありますスペースをダッシュ​​だけにします。 2行目はスペースの文字列を1つのダッシュに置き換えます。代わりに変更のため

-iを使用します。

$ sed -i '{ 
    s/ *- */-/g; 
    s/ \+/-/g; 
}' input_file_name 

フォーマットが問題である場合、これは、単一の行に減らすことができます。

$ sed -i '{ s/ *- */-/g; s/ \+/-/g; }' input_file_name 
3

tr-sオプション(「スクイーズ」):

$ tr -s ' ' - <<< 'asd asd' 
asd-asd 
$ tr -s ' ' - <<< 'asd - asd' 
asd-asd 
関連する問題