Чтобы напечатать последнюю часть пути, используйтеbasename
:
$ dirc='/a/b/'
$ basename "$dirc"
b
Чтобы получить i-е/
-поле с разделителями, используя awk
, установите переменную awk
, например var
, на значение $i
, затем используйте $var
в awk
для доступа к i-е поле:
$ i=3
$ echo "$dirc" | awk -v var="$i" -F '/' '{ print $var }'
b
Разница между var
и $var
в awk
заключается в том, что var
является числовым значением, (в данном случае ), а $var
— значением поля, соответствующего этому числовому значению..
Как заметил ilkkachu, обратные кавычки вокруг последней строки кода не имеют смысла. Это приведет к тому, что результат команды (строкаb
)будет интерпретирована как команда, которая будет выполнена.
Инструмент, поддерживающий XML -, определенно подходит! Для быстрого взлома:
в GNUsed
:
sed -r 's/src="([a-z])/src="\U\1\E/g' file.xml
для более сложных изменений я предлагаю Perl
perl -pe 's/src="\K(\w+)/ucfirst($1)/e' file.xml
где
perl -pe command
— это цикл «readline, command, print» s/regexp/expression/e
заменяет регулярное выражение результатом выражения eval ()src="\K
— левый -контекстный шаблон Пробовал с помощью команды awk, все работает нормально
awk -F 'src="' '{$2=(toupper(substr($2,1,1))substr($2,2));$2="src="$2;print $0}' filename|sed 's/src=/&"/g'
выход
<general id="7" src="Xyz" srcType="abc" link="positive" />
<general id="3" src="Xyz" srcType="pqr" link="positive" />