Grep слово из файла в солярисе с помощью awk

Я на Oracle Solaris 10 и пытаюсь извлечь слово из XML-файла, используя комбинацию команды awk и cut. У меня есть ниже упомянутая строка в файле XML.

<Resource driverClassName="oracle.jdbc.OracleDriver"  name="jdbc/LiferayPool" type="javax.sql.DataSource" username="PROD_LIFERAY" password="" url="jdbc:oracle:thin:@server02:1521:PROD0100 " maxActive="20" maxIdle="10" minIdle="3" maxWait="10000" initialSize="3" validationInterval="60000" testOnBorrow="true" validationQuery="select 1 from dual" factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"/>

Я хочу построить команду awk, чтобы получить слово из позиции, в которой в приведенном выше примере показан PROD0100. Я ценю, если кто-то может помочь мне разобраться.

1 ответ

Как обычно с такой проблемой, есть много способов ее решить в Unix.

Awk сопоставляет шаблоны с действиями, поэтому вам понадобится что-то вроде

/PROD0100/ {
    # your actions here on the matching line
}

По умолчанию awk разбивает каждую строку на поля, разделенные пробелами.

Так что если вы используете что-то вроде

gawk '/PROD0100/{ for (i=1;i<=NF;i=i+1) { if (match($i, ".*PROD0100.*") != 0) { print "matching word "$i } } }' test

(где test - это файл для чтения, содержащий строку), тогда вы должны получить

matching word url="jdbc:oracle:thin:@server02:1521:PROD0100

Однако для ввода, которое вы вводите, у вас могут быть некоторые проблемы, потому что перед закрывающей двойной кавычкой в ​​слове, которое найдено, есть пробел.

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