Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Прошу поделиться вариантами нумерации строк (sed, awk, cat, nl) .  (Прочитано 4235 раз)

0 Пользователей и 1 Гость просматривают эту тему.

adawdp

  • Автор темы
  • Гость
— Здр.Все!
— Существует распространённая потребность пронумеровать строки. Вот я собрал некоторые варианты.
nl file1 > file-2                                         ←‖нумерация только полных строк, пустые пропускаются
nl -ba  file1 > file-2                                         ←‖нумерация с пустыми строками
nl -w1 file1 > file-2                                         ←‖„красивая“ нумерация
sed = file1 | sed 'N;s/\n/\t/' > file2                         ←‖между номером и строкой знак табуляции
sed '/./=' file1 | sed '/./N; s/\n/ /' > file2                         ←‖только для заполненных строк, вариант с пробелом
cat -n file1 ; cat -b file1 | cat > file2         ←‖„n“ для полных строк, а „b“ для всех строк,включая пустые
sed = file1 | sed 'N; s/^/     /; s/ *\(.\{3,\}\)\n/\1‖ /' > file2 ←‖параметр {3,\} это кол-во пробелов перед номером, после „\1“ можно ставить знаки или пробелы
awk '{print NR "‖ " $0 }' file1 > file2                         ←‖ничем не примечательная нумерация
— Наиболее расширенный вариант это (пример немного в моей интерпретации)
sed = file1 | sed 'N; s/^/     /; s/ *\(.\{3,\}\)\n/\1‖ /' > file2— Но хочется получить положим нумерацию типа 001, 002, 003 в столбик, естественно.
Что только скрипт писать? Или есть варианты? Может у кого готовое что есть на этот счёт?
« Последнее редактирование: 15 Апреля 2014, 08:17:37 от adawdp »

Оффлайн Azure

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
А чего там того "скрипта":
Код: (bash) [Выделить]
num=0 ; while read line ; do printf "%03d $line\n" $[num+=1] ; done < file1 > file2Хотя если внимательно "покурить man" все тоже самое делает сам nl
Код: (bash) [Выделить]
nl -nrz -w3 -s" " file1 > file2
« Последнее редактирование: 15 Апреля 2014, 15:51:18 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

adawdp

  • Автор темы
  • Гость
Azure, спасибо(!!!) я пока в состоянии „изваять“ готовый скрипт только или „по образу и подобию“ или из готовых конструктивных элементов :)
— Плюс ко всему ощущаю острый дефицит специального фундаментального образования на фоне прогрессирующего биологического старения организма :)!
— Свои узкие меркантильные задачи получить список «001, 002, 003» в столбик я решил и сохранил добытые сведения в свои специальные „закрома“. Подожду до вечера может кто ещё чем поделится и закрою тему.


Пользователь решил продолжить мысль 15 Апреля 2014, 17:59:24:
— Да, действительно :«-n, --number-format=FORMAT»-, в man nl …


Пользователь решил продолжить мысль 15 Апреля 2014, 18:12:15:
— Да, и ещё вопрос какие варианты с параметром -i (in-place), есть ли возможность сделать список „на месте“ , это, конечно, не сильно важно. Но я пока таких вариантов не встречал. Но если такие варианты есть, хотелось бы о них знать…
« Последнее редактирование: 15 Апреля 2014, 18:12:15 от adawdp »

 

Страница сгенерирована за 0.037 секунд. Запросов: 25.