我有表su,au,du,现在有一份1.txt,每一行的样式都为库名---表名,类似于a---su这种,例如第一行为a---ku,现在我想知道我这三张表在1.txt里面的匹配情况,输出结果样式类似库名---表名----su,写入2.txt里面,用shell来写
时间: 2025-01-13 22:08:14 浏览: 35
你可以使用Shell脚本来实现这个需求。以下是一个示例脚本,它会读取1.txt文件,查找表名是否在指定的表列表中(su, au, du),并输出匹配结果到2.txt文件中。
```sh
#!/bin/bash
# 定义要匹配的表名
tables=("su" "au" "du")
# 清空2.txt文件
> 2.txt
# 读取1.txt文件的每一行
while IFS= read -r line
do
# 使用---分割库名和表名
library_table=(${line//---/ })
library=${library_table[0]}
table=${library_table[1]}
# 检查表名是否在tables数组中
for t in "${tables[@]}"
do
if [ "$t" == "$table" ]
then
# 如果匹配,则输出到2.txt
echo "$library---$table---$t" >> 2.txt
break
fi
done
done < 1.txt
```
这个脚本的工作原理如下:
1. 定义一个数组`tables`,包含你要匹配的表名(su, au, du)。
2. 清空2.txt文件,确保每次运行脚本时结果文件是空的。
3. 使用`while`循环读取1.txt文件的每一行。
4. 使用`---`分割每一行,得到库名和表名。
5. 检查表名是否在`tables`数组中。
6. 如果匹配,则将结果写入2.txt文件。
将上述脚本保存为一个文件(例如`match_tables.sh`),并确保它具有执行权限:
```sh
chmod +x match_tables.sh
```
然后运行脚本:
```sh
./match_tables.sh
```
这样,匹配结果就会写入到2.txt文件中。
阅读全文
相关推荐








