Как считать символы в кавычках?

Пример:

Known Data: Total population = "150"

Вопрос: Используя удар, как я могу узнать количество символов в кавычках? и присвойте тот вывод переменной?

0
задан 31 August 2018 в 03:54

4 ответа

Поскольку Вы упомянули в bash и принятие там является отдельным проявлением "string", Вы могли сделать:

str='Known Data: Total population = "150"'
strip=${str/\"*\"/}
len=$(( ${#str} - ${#strip} -2 ))

затем:

echo $len
3
1
ответ дан 28 October 2019 в 01:36

Используя 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)
4
ответ дан 28 October 2019 в 01:36

Используя awk:

string='Known Data: Total population = "150"'
var=$(awk -F\" '{print length($2)}' <<< "$string")
4
ответ дан 28 October 2019 в 01:36

Используя 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
1
ответ дан 28 October 2019 в 01:36

Другие вопросы по тегам:

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