我有一些信息存储在外部文件中。
在主脚本中,我正在解析辅助文件以确定如何处理信息。
为此我尝试这样做:
cat ./secondary.file
file:block.txt @"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'
它本质上定义了从哪里获取数据以及要做什么才能获得正确的输出。其思想是每一行都有一个新的文件:文件名引用和一种从每个文件获取一致输出的方法。
因此在主文件上我可以这样做:
source=`cat ./secondary.file | grep -Ev "^#|^$" | tr -d "\r" | cut -d@ -f2`
这给了我“方法”:
"^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'
我现在正尝试将其添加到主脚本的命令管道中
... | grep -E $regex
我希望它能翻译成类似这样的话:
... | grep -E "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'
但它失败了,抱怨 grep 不是命令,awk 也是一样。我试过像这样将完整命令存储在辅助文件中
file:block.txt @grep -E "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'
但像这样在主文件上调用它:
source=`cat ./secondary.file | grep -Ev "^#|^$" | tr -d "\r" | cut -d@ -f2`
echo $source
grep -E "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)" | awk '{print $1"/"$3}'
... | $source | ...
但还是没运气。没主意了……