【问题标题】:how to print text between two specific words using awk, sed? [duplicate]如何使用awk,sed在两个特定单词之间打印文本? [复制]
【发布时间】:2018-05-29 10:38:05
【问题描述】:

如何使用 awk、sed 在两个特定单词之间打印文本?

$ ofed_info | awk '/MLNX_OFED_LINUX/{print}'
MLNX_OFED_LINUX-4.1-1.0.2.0 (OFED-4.1-1.0.2):
$

需要输出:-

4.1-1.0.2.0

【问题讨论】:

标签: linux bash awk sed grep


【解决方案1】:

关注awk 可能会对您有所帮助。(考虑到您对awk 的输入将与所示示例相同)

your_command | awk '{sub(/[^-]*/,"");sub(/ .*/,"");sub(/-/,"");print}' 

解决方案 2: 现在使用 sed 解决方案。

your_command | sed 's/\([^-]*\)-\([^ ]*\).*/\2/'

解决方案 3: 使用 awkmatch 实用程序:

your_command | awk 'match($0,/[0-9]+\.[0-9]+\-[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/){print substr($0,RSTART,RLENGTH)}'

【讨论】:

【解决方案2】:

你可以使用这个sed:

echo 'MLNX_OFED_LINUX-4.1-1.0.2.0 (OFED-4.1-1.0.2):' |
sed -E 's/^[^-]*-| .*//g'

4.1-1.0.2.0

sed 命令会删除从开头到第一个连字符的文本或以空格开头的文本。

【讨论】:

    【解决方案3】:

    试试这个:

    ofed_info | sed -n 's/^MLNX_OFED_LINUX-\([^ ]\+\).*/\1/p'
    

    sed 命令只选择以关键字开头的行并打印附加到它的版本。

    【讨论】:

      猜你喜欢
      • 2021-06-20
      • 1970-01-01
      • 2020-08-05
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多