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

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

1
задан 12 January 2014 в 00:21

7 ответов

Вот решение этой проблемы, используя perl

perl -e 'while (<>) {print "##$_"}' < infile > outfile
8
ответ дан 25 May 2018 в 19:35
  • 1
    Переключатель -p также полезен: perl -pe 's/^/##/' infile > outfile. (Существует также переключатель -i[extension] для замены целевого файла на месте.) perldoc.perl.org/perlrun.html#%2a-p%2a – Jukka Matilainen 31 July 2011 в 12:51

Пока мы находимся в этом:

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

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

6
ответ дан 25 May 2018 в 19:35

Вот путь bash:

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

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

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

4
ответ дан 25 May 2018 в 19:35

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

printf ",s/^/##/\nw\nq" | ed -s file.txt
3
ответ дан 25 May 2018 в 19:35

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

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

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

3
ответ дан 25 May 2018 в 19:35

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

ex -sc '%s/^/##/|x' file
% выбрать все строки s заменить x сохранить и закрыть
0
ответ дан 25 May 2018 в 19:35

Может быть выполнено с помощью функции отображения 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
ответ дан 25 May 2018 в 19:35

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

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