Додајте бројеве редова у стандардни излаз текстуалних датотека у терминалу

о додавању редова

У следећем чланку видећемо неке начине за додајте бројеве редова у текстуалне датотеке које визуализујемо из терминал. Ако сте се икада запитали како да додате ове бројеве редова у свој ГНУ / Линук стандардни текстуални излаз, овај кратки чланак покушаће да објасни различите начине за то.

Постоји неколико начина за додавање бројева редова у текстуалну датотеку. Следеће ћемо видети 6 различитих метода за то. Претпостављам да ће поред оних који ће се видети доле, постојати и неки други начини, али за почетак су довољни и ови.

Додајте бројеве редова у стандардни излаз текстуалних датотека

За почетак ћемо створити датотеку која се зове филе.ткт. У њега ћу додати неколико редова како бих дао садржај који ће бити идентификован. Да бисмо видели садржај датотеке коју сам управо креирао, отворићемо терминал (Цтрл + Алт + Т) и у њега записати:

мачје линије

cat archivo.txt

Коришћењем команде нл

Као што се може видети из резултата наредбе цат, датотека има 10 редова, од којих су три празна. Бројеве линија додаћемо помоћу нл цомманд. Да бисте то урадили, покрените:

нл линије

nl archivo.txt

Као што се видело у претходном хватању, наредба нл игнорише празне редове. Само додајте бројеве у непразне редове. Ако желиш нумерисати све редове, укључујући празне редове, покрените:

нл -ба линије

nl -b a archivo.txt

Поред тога, за већу јасноћу приликом читања резултата можемо додајте симбол иза бројева. На пример, да бисте додали тачку иза бројева, покрените:

нл -с тачкасте линије

nl -s "." archivo.txt

Можда желите поравнати излазну ширину. Да бисте то урадили, користите -в опција са променљивом вредношћу као што је приказано у следећем:

нл в3 линије

nl -w3 archivo.txt

Користећи наредбу мачка

Команда цат се користи за приказ садржаја датотеке, као што се види на првом снимку екрана овог чланка. Ако желите да додате бројеве на излаз датотеке, употреба -н као што је приказано у следећем:

мачка -н линије

cat -n archivo.txt

Можда ћете бити заинтересовани проследи стандардни излаз у нову датотеку. Да бисте то урадили, само морате покренути наредбу као што је приказано доле:

cat -n archivo.txt > nuevoarchivo.txt

Коришћење команде авк

Ово је можда најсложенија метода за добијени резултат. Додати бројеви редова за изношење датотека помоћу наредбе авк, трцати:

авк линије

awk 'BEGIN{i=1} /.*/{printf "%d.% s\n",i,$0; i++}' archivo.txt

Као што сте видели, доделио сам почетни број као 1 у параметру БЕГИН. Можемо доделити било који други почетни број по вашем избору, на пример 5, као што се може видети доле:

авк старт у 5

awk 'BEGIN{i=5} /.*/{printf "%d.% s\n",i,$0; i++}' archivo.txt

Користите следећу команду ако не желите да узмете у обзир празне редове:

авк нема празних редова

awk 'BEGIN{i=0} {if($0 !~ /^$/) {printf ("%d.%s \n",i,$0); i++} else { print $0} } ' archivo.txt

Ако мислите да је горње команде мало тешко запамтити, користите следећу наредбу која ће вам дати исти резултат као прва приказана са командом АВК:

авк ФНР

awk '{ print FNR " " $0 }' archivo.txt

Коришћењем команде сед

Да бисте додали редни број на стандардни излаз датотеке помоћу наредбе сед, трцати:

сед линије

sed '/./=' archivo.txt | sed '/./N; s/\n/ /'

Команда сед има цоол функцију коју треба поменути. Моћи приказати одређену линију из датотеке. На пример, да бисте приказали седми ред наше датотеке, покрените:

сед бетонска линија

sed -n 7p archivo.txt

Користећи наредбу мање

у додајте број стандардном излазу датотеке користећи мање, трцати:

мање -н

less -N archivo.txt

Коришћење греп наредбе

Команда греп се може користити за тражење линије која садржи одређени текст. Ако желите додајте бројеве редова у редове који садрже тражени текст, трцати:

греп -н

grep -n "línea" archivo.txt

Имајте на уму да ће ова наредба додати бројеве само у редове који садрже низ за претрагу. Такође, као што се види на снимку екрана, боји текст који се претражује. Све остало у датој датотеци ће бити прескочено.

И то је то, чак и ја то морам да кажем ове наредбе имају друге опције које могу допунити или проширити оне које су описане у овом чланку. За више информација о наредбама које су овде именоване, можете консултовати ман странице.


Оставите свој коментар

Ваша емаил адреса неће бити објављена. Обавезна поља су означена са *

*

*

  1. За податке одговоран: Мигуел Ангел Гатон
  2. Сврха података: Контрола нежељене поште, управљање коментарима.
  3. Легитимација: Ваш пристанак
  4. Комуникација података: Подаци се неће преносити трећим лицима, осим по законској обавези.
  5. Похрана података: База података коју хостује Оццентус Нетворкс (ЕУ)
  6. Права: У било ком тренутку можете ограничити, опоравити и избрисати своје податке.

  1.   нико дијо

    нема потребе за тражењем регуларних израза „/.*/“ у авк наредбама
    по дефаулту већ дели датотеку на редове и $ 0 садржи ред, па

    авк 'БЕГИН {и = 1} {принтф "% 03д:% с \ н", и, $ 0; и ++} 'филе.ткт

    ради исто (и боље) од

    авк 'БЕГИН {и = 1} /.*/[принтф "% д.% с \ н", и, $ 0; и ++} 'филе.ткт

  2.   Мигуел Куинтана дијо

    Одличан допринос! Хвала пуно!

  3.   Родриго Луна дијо

    Пре него што започнете пријатељски поздрав.

    Имам проблем са следећим скриптом.

    Информације о линијама које се подударају са претрагом добијају се из датотеке и чувају у променљивој.
    Пример:
    валуес = `авк -Ф«: »'{принт $ 1» »$ 2» »$ 3}' хоципорки | греп "201025" -н`

    Затим прелиставате променљиву и затим тражите одређену линију у датотеци.
    Пример:
    за вредност у $ вредностима; урадити
    сед -н "$ {валуе} п" датотека
    урадио

    Али ово шаље грешку
    сед: -е израз # 1, цхар 1: непозната наредба: `

    Може ли неко да ми објасни зашто и како се то може решити?