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

时间:2018-05-29 10:38:05

标签: linux bash awk sed grep

如何使用awk,sed?

在两个特定单词之间打印文本
Company.all.each do |c| 
  Apartment::Tenant.create(c.subdomain)
end

需要输出: -

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

3 个答案:

答案 0 :(得分:0)

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

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

解决方案第二: 现在使用sed解决方案。

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

解决方案3: 使用awk的{​​{1}}实用程序:

match

答案 1 :(得分:0)

您可以使用此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命令删除文本,直到从开始的第一个连字符开始,或者从空格开始到结尾的文本。

答案 2 :(得分:0)

试试这个:

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

sed命令仅选择以关键字开头的行,并打印附加到其上的版本。