sed получить определенный шаблон и изменить его

Чтобы напечатать последнюю часть пути, используйте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)будет интерпретирована как команда, которая будет выполнена.

0
19.07.2019, 12:36
3 ответа

Для редактирования XML используйте инструмент -, поддерживающий XML. Например, есть xsh , инструмент, который я принял для обслуживания.

open file.xml ;
for //@src set. xsh:subst(., "(.)", "\U$1") ;
save :b ;
3
28.01.2020, 02:18

Инструмент, поддерживающий 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— левый -контекстный шаблон
1
28.01.2020, 02:18

Пробовал с помощью команды 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" />
0
28.01.2020, 02:18

Теги

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