Як я можу додати номер рядка та вкладку до початку кожного рядка текстового файлу?
Як я можу додати номер рядка та вкладку до початку кожного рядка текстового файлу?
Відповіді:
awk '{printf "%d\t%s\n", NR, $0}' < filename
awk '{print NR, "\t", $0}'
.
nl
, також WRONG. У вихідному коді він ніколи не дасть вам правильних номерів рядків, оскільки він не рахує рядки з лише пробілом.
Команда nl повинна це робити, але вона додає пробіл і до номера рядка. Це частина основних Linux-систем.
nl lines.txt
1 $bkWTN
2 $cV8$.
nl
пропустити пробіл перед цифрою. Просто скористайтеся -w1
опцією, щоб сказати, що мінімальна ширина для числа - 1.
-nln
ви можете лівий виправдати , якщо ви не хочете , щоб простір (и) перед номерами рядків. Крім того, щоб вказати роздільник вкладок, який ви можете використовувати -s$'\t'
або -s' '
(вставити вкладку між окремими лапками з ctrl+v
потім tab
).
nl -w1
(від GNU coreutils 8.24) не врізає номери рядків.
sed = test.txt | sed 'N;s/\n/\t/'
Команда "sed =" друкує номер рядка з подальшим поверненням каретки, а потім наступним рядком.
Вираз "N; s / \ n / \ t /" візьме кожен рядок, отримає наступний рядок (тобто номер рядка та рядок) та замінить повернення каретки на вкладку.
\n
це канал каналів (зазвичай його називають просто "новим рядком", оскільки його перше поширення було використано в Unix), і \r
це повернення вагона. Windows використовує \r\n
(також званий CRLF
).
Як щодо
cat -n somefile.txt
?
Добре, ось однолінійне рішення bash:
$ IFS=$'\n';x=1;for l in $(<file.txt);do echo -e "$x\t$l";((x+=1));done
$ IFS=
Перша настройка IFS вказує bash за один раз читати повний рядок. Другий рядок скидає IFS за замовчуванням.
Як додатковий бонус, він працює повністю у вашій оболонці і не виконує програми!
Гаразд, оскільки ми збираємо способи зробити це,
grep -n . file.txt | sed 's/\(^[0-9]*\):/\1 /g'
# this is a tab with Ctrl-V + Tab =====> ----
sed file.txt -e 's/^/\t/' | cat -n | sed -e 's/^\t//'
або для деяких не-GNU sed
:
cat file.txt | sed -e 's/^/\\t/' | cat -n | sed -e 's/^\\t//'