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

Почему Вы просто не передаете по каналу для заголовка-1?

# Get a code that `my_command` prints in its first line
# parsed_first_line=`my_command | grep -oEe '[0-9]+'`
parsed_first_line=$( my_command | head -1 | grep -oEe '[0-9]+' )
echo 'Here is the first line ' $parsed_first_line

Это также позволяет my_command закончиться, но он только возвращает первую строку, которой он может затем соответствовать против Вашего grep.

3
07.09.2012, 18:30
5 ответов

В Vim: gg0<ctrl-v>GI;<Esc>

11
27.01.2020, 21:07
  • 1
    Спасибо, это работает отлично, но я не понимаю (и согласно моему тестированию также не нуждаются), "строительное стекло" вначале? –  stefan.at.wpf 07.09.2012, 18:40
  • 2
    gg переходит к первой строке. –  jw013 07.09.2012, 18:45
  • 3
    Почему 0 необходимо? gg также переходит к началу строки (если нет параметр конфигурации, о котором я не знаю?) –  Izkata 07.09.2012, 23:31
  • 4
    gg переходит к первому несимволу пробела. Это не то, что Вы хотите, если первый символ на первой строке был пространством или вкладкой. –  jw013 07.09.2012, 23:49
  • 5
    @gorkypl: В то время как в режиме вставки, Вы будете просто видеть свое редактирование в первой строке. После того как Вы поражаете <kbd> Esc </kbd>, он применит редактирование к целому блоку. –  echristopherson 09.09.2012, 21:55

В Vim можно также просто сделать глобальную замену на запуске всех строк:

:%s/^/;/
12
27.01.2020, 21:07
  • 1
    : : войти Исключая командным режимом, % указывать все строки в файле, s/^/;/ вставить a ; в начале каждой строки. % диапазон, это означает все строки. ввести :help ranges в энергии для получения большей информации о диапазонах в 4. Исключая –  cas 08.09.2012, 04:45

Для простой задачи как это Вы могли использовать sed или perl. Для маленького места использовать sed для этой простой задачи:

sed -i.old -e 's/^/;/' file

Это сохраняет копию исходного файла как "*.old" и добавляет a""; в начале каждой строки.

Если Ваш sed не версия GNU (как имеет место на многих вариантах Unix), вероятно, что у Вас не будет оперативного (-i) опция. Или просто перенаправьте к новому выходному файлу или Perl использования как perl -pi.old -e 's/^/;/' file

5
27.01.2020, 21:07
  • 1
    благодарит, хороший путь к сценарию, на данный момент я предпочитаю решение для энергии, поскольку я должен отредактировать файл так или иначе и нуждаться в редакторе для того :-) –  stefan.at.wpf 07.09.2012, 18:52

Я добавил бы к ответу jw013 путем изменения замены на

:%s/^[^;]/;\0/

Это может повторно выполняться так много раз, как Вы любите и не добавите точки с запятой бесконечно к началу строк, уже имеющих его в начале.

Это может также использоваться с sed или жемчугом с двоеточием и удаленным знаком процента.

Это заменяет во всех строках (%) каждую строку, которая начинает с чего-то другого, чем точка с запятой запускаться с точки с запятой и затем символа, с которого это запустилось первоначально (для хранения его в файле).

Обе команды (мой и jw013) должны быть сделаны в командном режиме, который является режимом запуска по умолчанию vi/vim и может быть получен доступ с ключом когда в режимах замены или Вставке.

1
27.01.2020, 21:07
  • 1
    Хороший, чтобы понять Ваши опции и выбрать, что является соответствующим, но я часто предпочитал бы не избегать двойного комментария, потому что затем я вижу то, что было ранее уже прокомментировано, и я могу инвертировать операцию. –  mc0e 17.10.2014, 08:40

Можно сделать это при помощи редактора vi только -

:%s/^/;/g
0
27.01.2020, 21:07

Теги

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