Файл с двойным интервалом, используя sed в сценарии оболочки - PullRequest
5 голосов
/ 19 февраля 2012

Я новичок в сценариях оболочки и использовал следующий код для двойного пробела файла (входной файл является параметром):

sed G $input_file >> $input_file

Проблема в том, что содержимое моего исходного файла:

Hi
My name is

Мой файл с двойным интервалом:

Hi
My name is
Hi

My name is

Есть ли что-то еще, что мне нужно добавить в сценарий оболочки, чтобы мой файл был только:

Hi

My name is

1 Ответ

5 голосов
/ 19 февраля 2012

Вы используете оператор добавления (>>), который добавляет к рассматриваемому файлу. При этом, как правило, вы не можете работать и выводить в один и тот же файл с > в bash. Для конкретного случая sed вы можете использовать параметр -i (в зависимости от версии и платформы):

sed -i G $input_file

Это должно редактировать ваш файл "на месте", если ваша версия имеет эту опцию. Я говорю «на месте», потому что я почти уверен, что на самом деле создает новый файл и перемещает его поверх первого для вас (инод отличается). Если нет, вы бы вывели в отдельный файл и переместили его обратно:

sed G ${input_file} > ${input_file}.bak
mv ${input_file}.bak ${input_file}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...