Пример:
Known Data: Total population = "150"
Вопрос: Используя удар, как я могу узнать количество символов в кавычках? и присвойте тот вывод переменной?
Поскольку Вы упомянули в bash
и принятие там является отдельным проявлением "string"
, Вы могли сделать:
str='Known Data: Total population = "150"'
strip=${str/\"*\"/}
len=$(( ${#str} - ${#strip} -2 ))
затем:
echo $len
3
Используя grep:
var=$(grep -Po '(?<=").*(?=")' fileName | tr -d '\n' | wc -c)
для Ваших возвратов в качестве примера:
echo $var
3
Используя sed:
var=$(sed -r 's/^.*"(.*)".*/\1/' fileName | tr -d '\n' | wc -c)
Используя awk:
string='Known Data: Total population = "150"'
var=$(awk -F\" '{print length($2)}' <<< "$string")
Используя perl
:
Одно/первый соответствий на строку:
perl -ne '{ print; m/"(.*?)"/; print length($1),"\n"; }'
Несколько соответствий на строку:
perl -ne '{ print; while (m/"(.*?)"/g) { print length($1),"\n"; } }'
Ваш пример:
echo 'Known Data: Total population = "150"' | \
perl -ne '{ print; m/"(.*?)"/; print length($1),"\n"; }'
Known Data: Total population = "150"
3
Пример с 2 заключенными в кавычки строками:
echo 'Known Data: Total population = "150"
Two quoted strings: "70" and "6000"' | \
perl -ne '{ print; while (m/"(.*?)"/g) { print length($1),"\n"; } }'
Known Data: Total population = "150"
3
Two quoted strings: "70" and "6000"
2
4
Не учтите print;
если Вам не нужна исходная распечатанная строка.
например:
var=$(echo 'Known Data: Total population = "150"' | \
perl -ne '{ m/"(.*?)"/; print length($1),"\n"; }')
echo $var
3