从bash中的输入文本文件解析特定字符串我的匹配模式

时间:2018-09-30 17:55:35

标签: bash awk pattern-matching filereader extract-value

我正在将文本文件作为命令行输入传递给脚本,并且需要解析该文件以搜索特定模式:

00 TOOL     | Running /variable/directory/path/to/the/tool/executable in batch (pid xxxxx)

现在我必须将/variable/directory/path/to/the/tool/executable提取到变量$executable中。

这里,保持恒定的部分在行的开头是00 TOOL | Running,在行的结尾是in batch (pid xxxxx),其中xxxxx也是变量。

提供了在输入文本文件中该行仅出现一次的功能。

我发现mikmart/purrr's "pmap" branch可以逐行读取,但是找不到读取上述变量的方法:

#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
    echo "Text read from file: $line"
done < "$1"

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

如果您的路径的值不是set字段,并且您希望将其匹配为正则表达式,请尝试执行以下操作。

val=$(awk 'match($0,/\/[^ ]*/){print substr($0,RSTART,RLENGTH);exit}' Input_file)

您可以通过执行var=$(awk code above)

将其值设置为变量