unix 从同一行中提取具有相似模式的所有单词,并将它们显示在列表中

blmhpbnm  于 2023-01-05  发布在  Unix
关注(0)|答案(1)|浏览(150)

我已经得到了一个xml文件,我已经使用cat显示了这个文件,并且我还通过grep命令提取了我要查找的那一行。
该命令如下所示:

cat file_name.xml | grep -i pattern1

输出为一行,用xml括号括起来:

<list_of_names>ABC987599.com,ABC419192.com,ABC456321.com</list_of_names>

如何操作此输出,以便获得ABC地址列表,如下所示:

ABC987599.com

ABC419192.com

ABC456321.com

我试过了

cat file_name.xml | grep -i pattern1 | grep -Po 'ABC*com'

但我得到的只是

ABC

ABC

ABC
cqoc49vn

cqoc49vn1#

那么,从逗号到换行符的简单转换又如何呢?就像下面这个例子:

echo "a,b,c" | tr "," "\n"
a
b
c

玩得开心:-)

    • 编辑:**

显然,您需要首先删除XML标记,我建议使用sed

echo "<list_of_names>ABC987599.com,ABC419192.com,ABC456321.com</list_of_names>" 
  | sed 's/<list_of_names>//g' 
  | sed 's/<\/list_of_names>//g' 
  | tr "," "\n"

(The带有管道的整个命令将放在一行中。)
供您参考:当在sed中使用/字符时,它前面必须有一个反斜杠,因此是<\/list...

相关问题