从 bash 中的输入文本文件中解析我的匹配模式的特定字符串
Parse specific string my matching pattern from a input text file in bash
我将一个文本文件作为命令行输入传递给脚本,并且需要解析文件以搜索特定模式:
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
又是一个变量。
前提是在输入的文本文件中,这一行只会出现一次。
我找到了 snippet 逐行读取,但找不到读取上述变量的方法:
#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
echo "Text read from file: $line"
done < ""
任何帮助将不胜感激!
如果您的路径值不是一个设置字段,并且您想将其匹配为正则表达式形式,请尝试执行一次。
val=$(awk 'match([=10=],/\/[^ ]*/){print substr([=10=],RSTART,RLENGTH);exit}' Input_file)
您可以通过 var=$(awk code above)
将其值设置为变量
我将一个文本文件作为命令行输入传递给脚本,并且需要解析文件以搜索特定模式:
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
又是一个变量。
前提是在输入的文本文件中,这一行只会出现一次。
我找到了 snippet 逐行读取,但找不到读取上述变量的方法:
#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
echo "Text read from file: $line"
done < ""
任何帮助将不胜感激!
如果您的路径值不是一个设置字段,并且您想将其匹配为正则表达式形式,请尝试执行一次。
val=$(awk 'match([=10=],/\/[^ ]*/){print substr([=10=],RSTART,RLENGTH);exit}' Input_file)
您可以通过 var=$(awk code above)