bash - 使用 bash 脚本需要获得所需的输出
问题描述
我有一个包含 4,000 行的文件,其中显示了以下一些行:
Sdppointer_u7
Sdppointer_gh6
Wsd_rt5
Wsd_p8
所有行将在哪里Sdppointer_*, Wsd_*
。当文件遇到带有字符串的行时,它需要打印如下所示的输出Sdppointer_*, Wsd_*
。在下面的代码中 t2 是文件。
#!/bin/bash
str1="SdpMaster*"
str2="Wsd*"
content=$(cat t2)
if [ "$str1" == "$content" ];then
echo "User A hitlist " "$str1" "-rev" "B.9"
elif [ "$str2" == "$content" ];then
echo "User A hitlist " "$str2" "-rev" "A.7"
else
echo "Not found"
fi
在我上面的代码中,我怎样才能让 str1、str2 接受所有的字符串,比如Sdppointer_*, Wsd_*
期望的输出:
User A hitlist Sdppointer_u7 -rev B.9
User A hitlist Sdppointer_gh6 -rev B.9
User A hitlist Wsd_rt5 -rev A.7
User A hitlist Wsd_p8 -rev A.7
解决方案
我喜欢这种事情的案例陈述。
while read line
do case "$line" in
SdpMaster*) echo "User A hitlist " "SdpMaster*" "-rev" "B.9" ;;
Wsd*) echo "User A hitlist " "Wsd*" "-rev" "A.7" ;;
*) echo "Not found '$line'" ;;
esac
done < tst
我添加了与 SdpMaster 匹配的行 (3) -
$: cat tst
Sdppointer_u7
Sdppointer_gh6
SdpMaster_ab1
Wsd_rt5
Wsd_p8
输出 -
Not found 'Sdppointer_u7'
Not found 'Sdppointer_gh6'
User A hitlist SdpMaster* -rev B.9
User A hitlist Wsd* -rev A.7
User A hitlist Wsd* -rev A.7
如果你愿意,你仍然可以使用 vars。
推荐阅读
- c# - geckodriver - 不能创建一个 js 变量然后读取它?
- reactjs - 如何使用 Tensorflow.JS 和 React 创建路径绘制算法以在地标检测中显示面部网格的特定地标?
- java - 我在使用 theGraph.bfs 函数时需要帮助
- android - Flutter share plus:在 WhatsApp 上分享图片和文字
- react-native - AsyncStorage 以错误的格式保存数组
- c++ - 您可以将 clang-format 指向子目录中的 .clang-format 文件吗?
- airflow - Airflow dag 找不到连接 ID
- javascript - 如何在 Ag Grid React 中更改上下文
- linux - 在终端中执行命令的脚本
- javascript - 如何在角度 12 中实现 d3 js 不相交力图