我正在尝试在特定的第一个匹配(_ 和 -)之间提取文本。例如,我需要从下面得到数字 5:
MQSeriesRuntime_5-U200491-7.5.0-4.x86_64
Run Code Online (Sandbox Code Playgroud)
我尝试了 awk 字段分隔符(awk -F),但这让我在 _ 之后得到了整个文本。
你只需要对你的字段分隔符有创意:
$ awk 'BEGIN {FS="_|-"} {print $2}' input
5
Run Code Online (Sandbox Code Playgroud)
诀窍FS
在于它不是一个字符串;这是一个正则表达式。
根据您的要求在下面进行更全面的解释:
一个awk
脚本可以定义名为码块BEGIN
的任何输入数据的处理之前,其执行。
我使用此代码块FS
使用正则表达式作为连字符 ( -
) 或下划线 ( _
)来定义字段分隔符( )。
下一个代码块{print $2}
将打印第二个字段(即由迄今为止的分隔符分隔的第二个字符串/-|_/
),这就是5
您要查找的字段。一个没有前缀的代码块将针对由 读取的每条记录执行awk
。