使用 AWK/SED 从多个字符串中提取单词

使用 AWK/SED 从多个字符串中提取单词

我正在寻找逻辑,其中我尝试在 Linux 中使用 AWK 命令从多行中提取单词,尝试使用 AWK 和 SED 进行多种方式,但没有结果。

随附的在此输入图像描述是文本文件和预期输出

答案1

使用XML小星:

xmlstarlet sel -t -m '//APPLIANCE' -v 'concat(NAME/text()," ",STATUS/text())' -nl file.xml

对于给定的数据,这将产生

METASYNC Online
DELTA Offline

它通过查找 XML 文档中的所有节点并使用中间的空格APPLIANCE连接它们的值NAME和子节点来实现此目的。在输出每个 的结果后,最后插入一个STATUS换行符。-nlAPPLIANCE

如果您想要列标题和更好的表格格式:

( echo 'Device_name Status'
  xmlstarlet ...as above... ) | column -t

答案2

您可以使用它来获得所需的输出

$ echo "DEVICE-NAME STATUS" ; grep -e NAME -e STATUS <filename> | sed 's#NAME##g ; s#STATUS##g ;  s#<>## ; s#</>##' | xargs -L2 | column -t

输出:

DEVICE-NAME STATUS
METASYNC Online
DELTA OFFLINE

相关内容