shell中while的模糊匹配
时间: 2023-08-07 21:07:06 浏览: 119
在shell脚本中,可以使用while循环来进行模糊匹配。一种常见的方法是使用通配符进行模糊匹配,例如使用`*`匹配任意字符。下面是一个示例:
```shell
#!/bin/bash
# 模糊匹配的关键词
keyword="pattern*"
# 循环处理文件
for file in *; do
# 判断文件名是否匹配关键词
if [[ $file == $keyword ]]; then
# 执行你的操作,例如打印文件名
echo "匹配的文件:$file"
fi
done
```
在上面的示例中,`*`通配符用于匹配任意字符,而`==`用于比较两个字符串是否相等。如果文件名匹配关键词,就执行你希望执行的操作。你可以根据自己的需求修改关键词和操作部分。
另外,你也可以使用正则表达式进行模糊匹配。在shell中,可以使用`=~`操作符将字符串与正则表达式进行匹配。以下是一个示例:
```shell
#!/bin/bash
# 模糊匹配的正则表达式
pattern="pattern.*"
# 循环处理文件
for file in *; do
# 判断文件名是否匹配正则表达式
if [[ $file =~ $pattern ]]; then
# 执行你的操作,例如打印文件名
echo "匹配的文件:$file"
fi
done
```
在上面的示例中,`=~`操作符用于将文件名与正则表达式进行匹配。如果文件名匹配正则表达式,就执行你希望执行的操作。同样,你可以根据自己的需求修改正则表达式和操作部分。
相关问题
帮我写一个shell脚本 ,批量统计hive库名为fdp库下表名模糊匹配db_的表数据量,输出表名,数量,保存为txt文件
好的,以下是一个简单的shell脚本,可以实现批量统计hive库名为fdp库下表名模糊匹配db_的表数据量,并将结果保存为txt文件:
```
#!/bin/bash
# 连接hive的参数
HIVE_HOST="localhost"
HIVE_PORT="10000"
HIVE_USER=""
HIVE_PASS=""
HIVE_DB="fdp"
# 匹配的表名
TABLE_NAME="db_*"
# 输出结果的文件名
OUTPUT_FILE="table_data.txt"
# 连接hive,执行查询,并将结果保存到文件
beeline -u jdbc:hive2://${HIVE_HOST}:${HIVE_PORT}/${HIVE_DB} -n ${HIVE_USER} -p ${HIVE_PASS} -e "show tables like '${TABLE_NAME}';" | while read table; do
data=$(beeline -u jdbc:hive2://${HIVE_HOST}:${HIVE_PORT}/${HIVE_DB} -n ${HIVE_USER} -p ${HIVE_PASS} -e "select count(*) from ${table};")
echo "${table} ${data}" >> ${OUTPUT_FILE}
done
```
你可以将以上脚本保存为一个文件,例如名为`count_table_data.sh`,然后在终端中执行该脚本即可。注意,执行前需要先修改脚本中的连接hive的参数、匹配的表名和输出结果的文件名等参数。
帮我写一个shell脚本 ,beeline连接进入hive ,批量统计hive库名为yinzhou库下表名模糊匹配db_的表数据量,输出表名,数量,保存为txt文件
好的,这是一个简单的shell脚本,可以帮您实现这个功能:
```shell
#!/bin/bash
# beeline连接信息
hostname=your_hostname
port=your_port
username=your_username
password=your_password
# 连接hive并统计数据量
beeline -u "jdbc:hive2://$hostname:$port/default" -n $username -p $password -e "use yinzhou; show tables like 'db_*';" | while read table; do
count=$(beeline -u "jdbc:hive2://$hostname:$port/default" -n $username -p $password -e "use yinzhou; select count(*) from $table;")
echo "$table,$count"
done > db_tables.txt
```
将上述脚本保存为`hive_table_count.sh`,然后在终端中运行以下命令即可:
```shell
chmod +x hive_table_count.sh
./hive_table_count.sh
```
这个脚本会连接到您的Hive服务器,并统计库名为`yinzhou`,表名以`db_`开头的表的数据量,并将结果保存在`db_tables.txt`文件中。
阅读全文