Ожидаются образцы исходных файлов, думаю, это должно сработать:
gawk '($1=="Count"){print "Count = " (++i); next;} 1' /tmp/rand_file1
Краткое пояснение:
в строках, имеющих Count
в качестве первого поля :напечатать новый оператор подсчета и увеличить число. ++i
начнется с 1, i++
начнется с 0. В этом случае также пропустите оставшуюся часть обработки и перейдите к строке ввода next
.
для всех строк(1
):выполнить действие по умолчанию, то есть распечатать строку ввода.
Это должно быть быстрее, так как оно затрагивает каждую строку ввода только один раз, в вашем существующем решении совпадение для Count
копирует весь файл.
Если вы добавите параметр -i
к вашему хеш-бангу (s ), он укажет, что скрипт работает в интерактивном режиме.
#!/bin/bash -i
В качестве альтернативы вы можете вызывать скрипты с этой опцией:
bash -i /path/to/script.sh
Поиск вашего .bashrc
не является хорошей идеей. Вы можете создать файл .bash_alias
с вашим псевдонимом, а затем использовать этот файл в своем скрипте и использоватьshopt
что-то вроде:
shopt -s expand_aliases
source ~/.bash_alias
Информация на справочной странице Bash:
Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt (see the descrip‐ tion of shopt under SHELL BUILTIN COMMANDS below).