Как добавить "/ 1 /" в качестве номера строки в текстовом файле? - PullRequest
0 голосов
/ 02 января 2019

В Unix я хочу добавить косую черту до и после номера строки в файле .txt

эта команда показывает только номера строк cat -n txt.file

this:

Tony
Alpha
Bravo

к этому:

/1/ Tony
/2/ Alpha
/3/ Bravo

Ответы [ 5 ]

0 голосов
/ 03 января 2019

Perl решение

$ cat  add_line_num.txt
Tony
Alpha
Bravo

$ perl -pe ' $_="/$./ $_" ' add_line_num.txt
/1/ Tony
/2/ Alpha
/3/ Bravo
0 голосов
/ 03 января 2019

Чтобы добавить bash решение (медленное, как и ожидалось):

while IFS= read -r line; do printf '/%d/ %s\n' "$((++i))" "$line"; done < file.txt

Или странный, но "творческий" способ (на удивление, это относительно быстро):

paste -d" " <(seq -f "/%g/" 1 $(wc -l < file.txt)) file.txt
0 голосов
/ 02 января 2019

awk, вероятно, самый чистый вариант , но вы также можете использовать команду nl:

 nl -a -n ln txt.file | sed 's/^\([0-9]*\) */\/\1\//'

(Косые черты вокруг номера строки - домашнее задание? - усложняют его. Команда sed добавляет косые черты. Возможно, вам придется немного их отредактировать в зависимости от вашей версии Unix. Я делал это на Mac.)

0 голосов
/ 02 января 2019

A sed решение:

   sed '=' file | sed 'N;s_^_/_;s_\n_/ _'

Здесь нужен канал | из-за ограничений команды =.

0 голосов
/ 02 января 2019
awk '{print "/" FNR "/ " $0}' file
...