Как добавить номера строк в каждую строку с помощью команды оболочки?

Попробуйте man rsync, чтобы получить подробную информацию о различных способах использования инструмента. Там есть обширный набор примеров.

Мне часто казалось, что rsync работает довольно медленно, но он обычно избегает передачи данных, которые не нужно передавать. Он может тратить большое количество времени на пропуск файлов, которые не нужно передавать.

Я часто видел, что CIFS является узким местом. Он добавляет дополнительные накладные расходы на доступ к файлам. Возможно, будет лучше получить доступ к файлам из системы, экспортирующей файлы через CIFS. Существует сервер rsync для Windows, если файловая система находится именно там.

На гигабитном коммутаторе вполне возможно, что вы не можете читать или записывать данные достаточно быстро, чтобы насытить соединение. На старом оборудовании системная шина может даже не передавать данные достаточно быстро, чтобы насытить соединение.

16
19.02.2019, 11:53
2 ответа

я сделал по методу ниже

команда:cat -n filename |sed -r "s/^\s+//g"| sed "s/^[0-9]*/&\> /g"

выход

cat -n u.txt |sed -r "s/^\s+//g"| sed "s/^[0-9]*/&\> /g"
1>  PSS-A  (Primary A)
2>  PSS-B  (Primary B)
3>  PSS-C  (Primary C)
4>  PSS-D  (Primary D)
5>  PSS-E  (Primary E)
6>  PSS-F  (Primary F)
7>  PSS-G  (Primary G)
8>  PSS-H  (Primary H)
9>  PSS-I  (Primary I)
10>     SPARE  (SPARE)
0
27.01.2020, 19:47

В Linux/Unix почти всегда есть несколько способов выполнения общих задач. Для полноты картины, вот несколько других способов, помимо очевидного:

    pr -t -n [file]

Из старой команды для форматирования текста для отправки на линейный принтер. ' -t' будет опускать информацию заголовка и нижнего колонтитула, не относящуюся к терминалу.

Вот симпатичный метод sed, который печатает номер строки через каждую вторую строку. Мы используем «вставить», чтобы сложить их в одну строку :

.
    sed = /etc/passwd | paste - -

Или мы можем использовать единственный настоящий редактор, ред.:

    echo '1,$n' | ed -s [file]

Или, например, не -курсор vi -обращается к предшественнику:

    printf 'set number\ng/^/p\n' | ex /etc/passwd

И последний сложный ответ, требующий ksh93 или bash (и команды seq. Использование диапазона.. и оператора eval остается в качестве упражнения):

    paste <(seq $(wc -l < [file])) [file]

Протестировано на Debian Linux, FreeBSD и Solaris 10 (последняя не работает из-за отсутствия 'seq' ).

0
18.03.2021, 18:21

Теги

Похожие вопросы