Предварительно ожидайте ## к каждой строке в текстовом файле

Я хочу добавить хеши ко всем строкам в файле обычного текста. Все хорошо и с использованием терминала и с GUI — я просто должен был сделать его.

30
задан 11 January 2014 в 11:21

8 ответов

Можно использовать sed сделать это:

sed -i.bak 's/^/##/' file

Это заменяет запуск строки (^) с ##.

С -i.bak переключатель, sed редактирует оперативный файл, но создает резервную копию с расширением.bak.

50
ответ дан 23 November 2019 в 00:45

Вот решение этой проблемы с помощью жемчуга

perl -e 'while (<>) {print "##$_"}' < infile > outfile
8
ответ дан 23 November 2019 в 00:45

В то время как мы в нем:

gawk -i inplace '{print "##"$0}' infile

Это использует (сравнительно новый) оперативный плагин редактирования для GNU awk 4.1.0 +.

6
ответ дан 23 November 2019 в 00:45

Вот a bash путь:

while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile

(В bash оболочка, работая read -r без других аргументов работает как IFS= read -r REPLY.)

Это стилистически вдохновлено решением для жемчуга beav_35, которое я допускаю, вероятно, выполнения намного быстрее для огромных файлов с тех пор perl как могут ожидать, будет более эффективным, чем оболочка когда дело доходит до обработки текста.

4
ответ дан 23 November 2019 в 00:45

sed -i не является стандартным POSIX, поэтому если Вы будете пуристом, то Вы захотите использовать ed:

printf ",s/^/##/\nw\nq" | ed -s file.txt
3
ответ дан 23 November 2019 в 00:45

Вот более легкое perl путь, чем представленный в другом месте:

perl -pi -e 'print "##"' YOURFILEHERE

Этот (ab) использует факт это perl -p печатает строку после выполнения поданной команды -e.

3
ответ дан 23 November 2019 в 00:45

Можно использовать Vim в режиме Ex:

ex -sc '%s/^/##/|x' file
  1. % выберите все строки

  2. s замена

  3. x сохраните и закройтесь

0
ответ дан 23 November 2019 в 00:45

Может быть сделан с функцией и перенаправлением отображения Python stdin:

$ cat input.txt                                                                                                          
lorem ipsum
quick brown fox
hello world
$ python -c 'import sys;print "".join(map(lambda x: "##"+x,sys.stdin.readlines()))'  < input.txt                         
##lorem ipsum
##quick brown fox
##hello world

Сохраните вывод в новый файл и используйте его вместо оригинала

0
ответ дан 23 November 2019 в 00:45

Другие вопросы по тегам:

Похожие вопросы: