【发布时间】:2017-02-22 18:11:56
【问题描述】:
我有一个 CSV 被读入一个包含以下短语的脚本:
This port supports SSLv3/TLSv1.0.
This port supports TLSv1.0/TLSv1.1/TLSv1.2.
This port supports TLSv1.2.
我要做的是在单词/数字上设置一个 REGEX 变量:TLSv1.0 然后在 IF/Then 语句中引用该变量。我的问题 拥有正则表达式以查看 TLSv1.0。有人可以帮我吗 制作我的 BASH 脚本以查看 TLSv1.0,当它沿着以“此端口支持”开头的行时?
#!/bin/sh
REGEX="\TLSv1.0\"
cat filename.csv | awk -F"," '{gsub(/\"/,"",$4);print $5}' | sed s/\"//g |
while IFS=" " read pluginoutput
do
if [[ "$pluginoutput" =~ $REGEX ]]; then
.
. rest of my code
.
您可以看到我正在尝试在变量中设置正则表达式,但它不起作用。显然是错字什么的。有人有正则表达式建议吗?
谢谢,
【问题讨论】:
-
文字引号是怎么回事?你告诉 shell 寻找
"s within 正在搜索的字符串,但它们显然没有出现.. -
另外,
#!/bin/sh是 POSIX sh,而不是 bash。如果您想要 bash 功能,请使用 bash:#!/bin/bash。 -
另外,
cat filename | awk ...的效率低于awk ... <filename或awk ... filename。 -
您有语法错误。
REGEX="\TLSv1.0\"应该是REGEX=\"TLSv1.0\" -
这些其他问题有很多原因,但这并不是我想要回答的真正核心。我正在尝试在变量中确定正确的正则表达式语法,以便在正在处理的文档中找到单词 TLSv1.0。