Зашифрованный внешний жесткий диск не распознан

Синтаксический анализ текстового файла в оболочке очень медленный и чрезвычайно подвержен ошибкам. Вы запускаете grepодин раз для каждой строки входного файла и sedдважды для каждой строки, содержащей Count. Избегайте этого.

Насколько я понимаю, это можно заменить на

awk '$1 == "Count" { printf("Count = %d\n", ++i); next } { print }' rand_file1 >rand_file1.new

Это выводит Count =строк с правильным приращением, когда встречается строка, чье первое поле точно равно Count, и пропускает все остальные строки как -.

Как вариант,

awk '$1 == "Count" { $0 = sprintf("Count = %d", ++i) } { print }' rand_file1 >rand_file1.new

который изменяет значение $0(входной строки )и печатает все строки с одним print.

Этот последний вариант можно сократить до

awk '$1 == "Count" { $0 = sprintf("Count = %d", ++i) } 1' rand_file1 >rand_file1.new

См. также " Почему использование цикла оболочки для обработки текста считается плохой практикой? ".

3
09.11.2020, 10:39
0 ответов

Теги

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