【发布时间】:2021-12-31 06:25:23
【问题描述】:
编写一个接收 3 个参数的 shell 脚本,但在脚本中,其中一个命令需要在应用分隔符后检查第一个值
#!/bin/bash
awk -F'\t' '$1 ~ /$1/&&/$2/ {print $1FS$3}' $3
这个命令被调用:
bash search.sh 5 AM filename.txt
并且应该如下执行:
awk -F'\t' '$1 ~ /5/&&/AM/ {print $1FS$3}' filename.txt
该命令在 shell 脚本之外正常运行,在 shell 脚本中使用它时现在什么也不返回。 文件名.txt:
03:00:00 AM John-James Hayward Evalyn Howell Chyna Mercado
04:00:00 AM Chyna Mercado Cleveland Hanna Katey Bean
05:00:00 AM Katey Bean Billy Jones Evalyn Howell
06:00:00 AM Evalyn Howell Saima Mcdermott Cleveland Hanna
07:00:00 AM Cleveland Hanna Abigale Rich Billy Jones
预期输出:
05:00:00 AM Billy Jones
【问题讨论】:
-
AM后面有标签吗?如果没有,时间和名称将是一个字段。 -
您的时间戳可以是除整点以外的任何时间,例如你能在你的输入中有
03:05:20吗?您是否尝试打印恰好在该时间或以第一个数字开头的小时内出现的行? -
在您的输入中如何表示午夜 -
00:00:00 AM或其他? -
AM 后面有个标签。理论上,时间戳可以包含的不仅仅是小时,出于本次分配的目的,它们不会。是的,午夜表示为 12:00:00 AM