如何使用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发布于 2018-05-29 10:39:42
在这里,遵循awk可能会对您有所帮助。(考虑到您对awk的输入将与仅显示的示例相同)
your_command | awk '{sub(/[^-]*/,"");sub(/ .*/,"");sub(/-/,"");print}' 解决方案2:现在与sed解决方案。
your_command | sed 's/\([^-]*\)-\([^ ]*\).*/\2/'解决方案3:使用awk的match实用程序的:
your_command | awk 'match($0,/[0-9]+\.[0-9]+\-[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/){print substr($0,RSTART,RLENGTH)}'发布于 2018-05-29 10:42:39
您可以使用此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命令从开始到第一个连字符或以空格开始的文本开始删除文本。
发布于 2018-05-29 10:46:27
试试这个:
ofed_info | sed -n 's/^MLNX_OFED_LINUX-\([^ ]\+\).*/\1/p'sed命令只选择以关键字开头的行,并打印附加到它的版本。
https://stackoverflow.com/questions/50582275
复制相似问题