当前位置: 首页 > 面试题库 >

字符串比较无法正常工作

江子石
2023-03-14
问题内容

我的代码:

x=$(awk -v i=$h -v j=17 'FNR == i {printf "%s ", $j}' newiptables.log)
s="SPT=80"

引用的日志文件是:

Dec 26 09:17:51 localhost kernel: IN=eth0 OUT= MAC=00:10:c6:a8:da:68:00:90:7f:9c:50:5a:08:00 SRC=198.252.206.16 DST=10.128.1.225 LEN=313 TOS=0x00 PREC=0x00 TTL=64 ID=59334 PROTO=TCP SPT=80 DPT=56506 WINDOW=46535 RES=0x00 ACK PSH URGP=0 
Dec 26 09:17:52 localhost kernel: IN=eth0 OUT= MAC=00:10:c6:a8:da:68:00:90:7f:9c:50:5a:08:00 SRC=198.252.206.16 DST=10.128.1.225 LEN=1440 TOS=0x00 PREC=0x00 TTL=64 ID=47303 PROTO=TCP SPT=80 DPT=56506 WINDOW=46535 RES=0x00 ACK URGP=0 
Dec 26 09:17:52 localhost kernel: IN=eth0 OUT= MAC=00:10:c6:a8:da:68:00:90:7f:9c:50:5a:08:00 SRC=198.252.206.16 DST=10.128.1.225 LEN=1440 TOS=0x00 PREC=0x00 TTL=64 ID=47559 PROTO=TCP SPT=80 DPT=56506 WINDOW=46535 RES=0x00 ACK URGP=0

然后,需要检查脚本中的下一个条件是:

if [[ "$x" == "$s" ]]
then 
 < process if condition is true>
else
 < process if condition is false>
fi

如果条件不起作用


问题答案:

必要的修复:

s="SPT=80"   # Not STP=80

此后已在问题中解决。

可能必要的修复:

if [[ "$x" == "$s" ]]  # Space between if and [[ highly recommended
then : it matches
else : it does not match
fi

如注释中所述,"%s "awk脚本中使用尾随空格表示将尾随空格存储在其中"$x",这将破坏与的比较"$s"



 类似资料:
  • 问题内容: 我写了一个从套接字读取一行的代码。 如果该行是“再见”,我希望它输出“ nice”。由于某种原因它不起作用,尽管我确实尝试无条件输出输入,并且确实说“再见” 这是我的代码 问题答案: 使用,而不是比较字符串。

  • 首先,考虑这个例子: 我期望什么:因为“123”是一个< code>const char*,我期望这些字符串的地址(就像其中一个答案所说的)被比较。 …因为和将只比较这些字符串的基址。不是字符串本身的内容。 但输出仍然是。好吧,我们实际上不知道如何比较两个prvalue对象的地址(或者至少我不明白会怎么做)。所以让我们将这些字符串声明为变量,看看会发生什么: 输出仍然是 。所以字符串不会衰减吗?或

  • 此项目是一个可编辑的字典程序。我正在尝试循环浏览已添加到词典中的单词,并将用户通过扫描仪输入的单词与已添加的单词进行比较。我的问题是,无论输入多么准确,我创建的异常总是被调用。我不确定异常是否错误,或者字符串是否比较不正确。字典中的单词是从一个名为“dictionary.txt”的文件中读取的。如果有帮助,程序将使用输入/输出。这是代码。。。。请帮忙!!

  • 问题内容: 我听说散列(即将字符串或对象转换为数字)用于字符串等,因为比较数字比字符串更容易。如果为真,这是什么原因? 问题答案: 不一定是这种情况,但大多数时候可能是这样。 请考虑以下情况: 我想比较字符串“ apples”和“ oranges”。如果我只想确定“ apples” ==“ oranges”,我只需要比较每个字符串的第一个字符:’a’!=’o’=>“ apples”!=“ oran

  • 主要内容:equals() 方法,equalsIgnoreCase() 方法,equals()与==的比较,compareTo() 方法字符串比较是常见的操作,包括比较相等、比较大小、比较前缀和后缀串等。 在 Java 中,比较字符串的常用方法有 3 个:equals() 方法、equalsIgnoreCase() 方法、 compareTo() 方法。下面详细介绍这 3 个方法的使用。 equals() 方法 equals() 方法将逐个地比较两个字符串的每个字符是否相同。如果两个字符串具有相

  • 我对蟒蛇很陌生。我试图从另一个列表中删除出现在一个列表中的文件。这些列表是通过在mac和windows上重定向ll-R生成的(但是自从使用其他python脚本进行合并、排序等处理之后)。有些文件名有重音和特殊符号。这些字符串,即使它们是相同的(打印相同,在包含列表的文件中看起来相同),也被发现是不相等的。 我找到了关于如何在Unicode中比较字符串与特殊字符的线程:Python字符串比较-特殊/