Мы действительно можем избежать использования нескольких программ для подсчета заглавных букв в файле, это можно легко сделать с помощью одного awk
, и это сэкономит нам несколько циклов и должно быть также БЫСТРО.
Не могли бы вы попробовать следующее.
awk '
{
count+=gsub(/[A-Z]/,"&")
}
END{
print "Total number of capital letters in file are: " count
}
' Input_file
Если вы хотите запустить его как скрипт, который принимает Input_file в качестве аргумента, также измените Input_file на $1
.
Объяснение: Добавление пояснения к приведенному выше коду, только для целей пояснения, а не для выполнения (следующего).
awk ' ##Starting awk program here.
{
count+=gsub(/[A-Z]/,"&") ##Creating a variable named count whose value will be keeping adding to itself, each time a substitution done from gsub.
##where gsub is awk out of the box function to substitute.
##Using gsub I am substituting each capital letter with itself and adding its count to count variable.
}
END{ ##Starting END block for this awk program. which will be executed once Input_file is done with reading.
print "Total number of capital letters in file are: " count ##Printing total number of capital letters which are there in count variable.
}
' Input_file ##mentioning Input_file name here.