【发布时间】:2019-04-20 00:31:42
【问题描述】:
所以我有一个名为 data.dat 的文件,其中包含一些房地产的数据,用“;”分隔(他们位于哪个区、区域、价格和简要说明)。
例如:
13;78;44;garage, balcony, multiple floors
23;100;25;garden, alarm system, unfurnished
16;97;60;balcony, unfurnished, alarm system
我正在编写一个 shell 脚本,其中列出了符合命令行参数中给出的搜索条件的公寓。因此,例如,如果我像这样运行程序:
bash real.sh -search alarm system unfurnished
输出应该是:
23;100;25;garden, alarm system, unfurnished
16;97;60;balcony, unfurnished, alarm system
我有以下代码可以检查 -search 之后的第一个单词:
if test "$1" = "-search"
then awk -v word="$2" 'BEGIN{FS=";"} {if ($4 ~ word) {print $0}}' data.dat;
exit 1;
fi
但是我需要这个程序能够在搜索后检查任意数量的单词。我怎么能那样做?我尝试使用正则表达式 "${@:2}" 而不是 "$2" 但这没有用。
【问题讨论】:
-
对于
alarm system,您要搜索包含alarm[space]system或alarm or system的行吗? -
报警[空间]系统一号
-
好吧,对不起,我是新来的,没有看到那个页面。