У меня есть следующая строка
signaldate signaltime period UwThiSon3dH140__mean UwThiSon3dH140__sigma
Я пытался использовать sed
заменять пространство запятой.
sed 's/ /,/g'
sed 's/[[:space:]]/,/g'
но это вывод все еще исходная строка. Как я могу заменить тот пробел?
Какова проблема?
$ echo signaldate signaltime period UwThiSon3dH140__mean UwThiSon3dH140__sigma \
| sed 's/ /,/g'
signaldate,signaltime,period,UwThiSon3dH140__mean,UwThiSon3dH140__sigma
, Возможно, то, что Вы видите, не является пробелом, или он смешал пробел. Попробуйте \s
символ вместо этого:
$ echo signaldate signaltime period UwThiSon3dH140__mean UwThiSon3dH140__sigma \
| sed 's/\s/,/g'
signaldate,signaltime,period,UwThiSon3dH140__mean,UwThiSon3dH140__sigma
Сбой, что, сделайте, как комментарии Вашего вопроса предполагают и передают вывод до hexdump
, таким образом, Вы видите то, что действительно продолжается, потому что это не пространство.
Примечание, которое Вы могли также использовать tr
для замены символа, но я сомневаюсь, что это собирается устранить проблему, если Вы не можете добраться sed
работа:
$ echo signaldate signaltime period UwThiSon3dH140__mean UwThiSon3dH140__sigma \
| tr ' ' ','
signaldate,signaltime,period,UwThiSon3dH140__mean,UwThiSon3dH140__sigma
\s
соответствия одиночный пробел или вкладка. Это не будет соответствовать, если будет два пробелов во входной строке. Таким образом, лучше использовать <space>+
в шаблоне.
$ echo 'signaldate signaltime period UwThiSon3dH140__mean UwThiSon3dH140__sigma' | sed 's/ \+/,/g'
signaldate,signaltime,period,UwThiSon3dH140__mean,UwThiSon3dH140__sigma
Необходимо выйти comma
оператор как это.
sed 's/ /\,/g'
я проверил то же в свою solaris систему,
bash-3.2$ echo "signaldate signaltime period UwThiSon3dH140__mean UwThiSon3dH140__sigma" | sed 's/ /\,/g'
signaldate,signaltime,period,UwThiSon3dH140__mean,UwThiSon3dH140__sigma
bash-3.2$