我想用-
替换所有空格,如果该行在bash中使用sed包含-
,则删除空格,例如
asd asd
- > asd-asd
asd - asd
- > asd-asd
答案 0 :(得分:3)
您可以tr
使用-s
选项(“挤压”):
$ tr -s ' ' - <<< 'asd asd'
asd-asd
$ tr -s ' ' - <<< 'asd - asd'
asd-asd
答案 1 :(得分:1)
您可以匹配空格和短划线,并用一个短划线替换:
s/[ -]\+/-/g
答案 2 :(得分:0)
我可能会使用两条sed线:
$ sed '{
s/ *- */-/g;
s/ \+/-/g;
}' input_file_name > output_file_name
第一行将空格包围的所有破折号转换为破折号。第二行现在将任何空格字符串替换为单个短划线。
对于就地修改,请使用-i
:
$ sed -i '{
s/ *- */-/g;
s/ \+/-/g;
}' input_file_name
如果格式有问题,可以将其缩小为一行:
$ sed -i '{ s/ *- */-/g; s/ \+/-/g; }' input_file_name