Сначала я подумал о SED ( sed "s/^/COUNTER \&/" /tmp/1.tex
), но он рассчитан на одну строку, и я не могу увеличить сам счетчик с помощью sed, думая сейчас, awk
потому что у меня большой опыт использования gawk
интегрированных подходов. Данные
What & South Dragon & North Dragon & 5 \\ \hline
What & South Dragon & North Dragon & 5 \\ \hline
What & South Dragon & North Dragon & 5 \\ \hline
Ожидаемый результат
1 & What & South Dragon & North Dragon & 5 \\ \hline
2 & What & South Dragon & North Dragon & 5 \\ \hline
3 & What & South Dragon & North Dragon & 5 \\ \hline
ОС: Debian 8.5
text-processing
awk
nl
Лео Леопольд Герц 준영
источник
источник
nl -s ' &' /path/to/file
,-s
указывает, что отделяет числа от тела входного файла.nl
отличается отcat -n
иawk
решение в том , что это не число пустых строк по умолчаниюЭто достигает того, что вы после. (как
awk '$0=NR" & "$0' filename
, но это немного загадочно)Или, если
sed
желательно, это дает тот же результат.perl
подходы.источник
sed = filename | ...
? - Я не знал, что вы можете использовать sed сequal
символом. - Вашеsed
заявление может работать в динамических средах? Есть слабые места?=
оператор находится в разделе «Команды нулевого или одноадресного ».= Print the current line number
. Так что функция на самом деле встроена в Sed. Ницца!Python может быть хорошим альтернативным инструментом для этого:
Это работает так, что мы перенаправляем текст в стандартный поток python и читаем строки оттуда.
enumerate()
Функция - это то, что дает количество строк, сsys.stdin
указанием в качестве входных данных и1
является начальным индексом. В остальном все просто - мы формируем список новых строк путем приведения индекса в виде строки, объединенной вместе со' & '
строкой, и самой строки. Наконец, все, что собирает''.join()
функция из списка в один тест .Кроме того, вот многострочная версия для файла сценария или просто для удобства чтения:
Работает точно так же:
Но если вы предпочитаете делать это в bash, то это также можно сделать:
источник
enumerate()
экономит, как 3 строки кода. Это полезно при работе с другими вещами, такими как обработка элементов в списках. См. Docs.python.org/2/library/functions.html#enumeratebash
примере, то не стесняйся использовать это :) Я только что нашел из опытаenumerate()
более элегантный, но это только мое мнение. Во что бы то ни стало, используйте другой метод, если считаете, что он более понятенenumerate
понятнее, чем создание переменной. Может ли лямбда-выражение сэкономить место?Это также опция
cat -n
с автоматической нумерацией:источник