linux 有没有一种方法可以在.txt文件中搜索包含两个用户输入变量的行,然后在bash脚本中打印这些行

cclgggtu  于 2023-04-05  发布在  Linux
关注(0)|答案(1)|浏览(88)

我有这个.txt文件名为“搜索_此_文件. txt”其中包含以下信息:

12:00:00 AM First_Name Last_Name
01:00:00 AM First_Name1 Last_Name2
...
01:00:00 PM First_Name13 Last_Name13
...
11:00:00 PM First_Name23 Last_Name23

我正在尝试编写一个bash脚本,它将逐行扫描“Search_this_file.txt”中的信息,并只打印出与两个用户输入变量匹配的行。在我的例子中,我要求用户输入时间(例如“12:00:00”)以及它是AM还是PM。因此,如果有人输入“01:00:00”作为时间,输入“PM”作为AM/PM,bash脚本将运行并在命令行终端中打印“01:00:00 PM First_Name13 Last_Name13”。
这是我目前掌握的情况:

#!/bin/bash/

read -p "Enter time in HH:MM:SS format " TIME
read -p "AM or PM? " AMPM

echo -e | grep -Fiw '$TIME' Search_this_file.txt | 
grep -Fiw "$AMPM"

感谢您的评分

fd3cxomn

fd3cxomn1#

快到了,朋友。
你只需要做一个改变:

#!/bin/bash

read -p "Enter time in HH:MM:SS format " TIME
read -p "AM or PM? " AMPM

echo -e | grep -Fiw "$TIME" Search_this_file.txt | 
grep -Fiw "$AMPM"

在Linux中放置单引号并不将其视为变量。
另外,如果你想要更好的代码,你可以参考下面的代码:

#!/bin/bash

 read -p "Enter time in HH:MM:SS format " TIME
 read -p "AM or PM? " AMPM

  while read line
  do 
  if [[$line == *"$TIME $AMPM"*]]; then
      echo $line
  fi
  done < your input file.txt

只是增加了更多的可靠性的代码。希望这有帮助。

相关问题