Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix sed-在一行中提取两个单词,不带空格_Unix_Sed - Fatal编程技术网

Unix sed-在一行中提取两个单词,不带空格

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

我需要在一行中提取一个单词和两个单词,没有空格

例如,我有一个文件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: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