нужна помощь по командам sed и awk? - PullRequest
1 голос
/ 20 апреля 2011

ФАЙЛ ВВОДА:

О, ФФ, 1123,81 долл. США, ты, 20100608, джей,,,,

O, gg, $ 1794.06, jui, 20100608, jjj ,, 13.180008 ,,,,

где угодно ,, встречается во входном файле, который мне нужно заменить на,,(промежуток между ,,) Может кто-нибудь помочь мне в этом?

Ответы [ 2 ]

3 голосов
/ 20 апреля 2011

Скрипт чистого bash

#!/bin/bash
# tested on bash 4

while read -r line
do
    while [[ $line =~ ,, ]]
    do
        line=${line//,,/, ,}
    done
    echo "$line"
done < file

Пример вывода

bash4> bash comma.sh
O,ff,$1123.81,ty,20100608,jjj, ,13.180002, , , ,
O,gg,$1794.06,jui,20100608,jjj, ,13.180008, , , ,
O,gg,$1794.06,jui,20100608,jjj, ,13.180008, , , ,

Обратите внимание, что дополнительный цикл while используется для изменения последующих ,, на , ,

1 голос
/ 20 апреля 2011

Примерно так может работать:

sed -e 's/,,/, ,/g' inputfile

Как указывает bash-o-logist, желаемый результат для таких вещей, как ,,,,, может быть , , , ,. Если это так, то это можно использовать (выполните команду дважды):

sed -e 's/,,/, ,/g; s/,,/, ,/g' inputfile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...