Unix sed-在一行中提取两个单词,不带空格
我需要在一行中提取一个单词和两个单词,没有空格 例如,我有一个文件web.xml:Unix sed-在一行中提取两个单词,不带空格,unix,sed,Unix,Sed,我需要在一行中提取一个单词和两个单词,没有空格 例如,我有一个文件web.xml: <connection-url>jdbc:jtds:sqlserver://sql2012:1433/AAA_1</connection-url> <connection-url>jdbc:jtds:sqlserver://sql2012:1433/BBB_1</connection-url> <connection-url>jdbc:jtds:sqls
<connection-url>jdbc:jtds:sqlserver://sql2012:1433/AAA_1</connection-url>
<connection-url>jdbc:jtds:sqlserver://sql2012:1433/BBB_1</connection-url>
<connection-url>jdbc:jtds:sqlserver://sql2012:1433/CCC_2</connection-url>
jdbc:jtds:sqlserver://sql2012:1433/AAA_1
jdbc:jtds:sqlserver://sql2012:1433/BBB_1
jdbc:jtds:sqlserver://sql2012:1433/CCC_2
我需要摘录<代码> AAAY1 ,<代码> BBBY1 和<代码> CcCY2,因为它们停留在<代码> 1433 /< /代码>和<代码> <代码>
< P>通过SED,$ sed 's~.*1433/\([^<]*\)</connection-url>.*~\1~' file
AAA_1
BBB_1
CCC_2
$sed's~.*1433/\([^到目前为止您尝试了什么?如果您使用正则表达式解析xml(如sed/awk/grep…),您应该知道风险所在。grep中的\K是什么。(我知道-oP是perl-re中的捕获模式)顺便说一句,我在楼上投票了\K
从打印中丢弃先前匹配的字符。在我们的例子中,先前匹配的1433/
将被丢弃。
$ grep -oP '1433\/\K[^><]*' file
AAA_1
BBB_1
CCC_2