bash - bash脚本猫和回声
问题描述
我是 bash 脚本的新手,我对此感到困惑:
tab=( "^[A-Z]\{4,\}[0-9]\{4,\}" )
for (( i=0; i<=$(( ${#tab[*]} - 1 )); i++ ))
do
tmp+=" grep -v \"${tab[i]}\" |"
done
# for remove the last |
chaine=`echo $tmp| rev | cut -c2- | rev`
#result anticipe "cat ${oldConfFile[0]} | grep -v "^[A-Z]\{4,\}[0-9]\{4,\}"
cat ${oldConfFile[0]} | echo $chaine
我的麻烦就在那里,如何同时使用 cat 和 echo ?
多谢。
解决方案
您不需要对每个模式进行 grep,只需将模式与管道 ( |
) 和 grep 连接一次。例如,如果要过滤掉包含 和 from 的行foo
,请bar
使用以下命令:baz
file
grep -v 'foo|bar|baz' file
您可以在调用之外构建模式以获得更好的可读性,如下所示:
my_pattern='foo'
my_pattern+='|bar'
my_pattern+='|baz'
grep -v "$my_pattern" file
推荐阅读
- haskell - Haskell 命令行脚本应该如何报告来自`read` 的错误?
- javascript - 修改 onClick() Javascript 上的输出
- python - 对背景较浅的图像进行伽马校正
- excel - excel vba组合图根据动态选择确定哪些应该是区域,哪些是线标记
- android - 现有的 android studio 项目模块问题
- r - 如何均匀地绘制半年度数据?
- image - 如何提取 MVIMG 的照片/视频组件?
- amazon-web-services - 从远程 Solaris 服务器到 AWS S3 存储桶的 FTP 文件
- javascript - 需要帮助将 excel 公式转换为 Javascript 逻辑
- python - 从 h2o 中,有没有办法将 N 个文件夹交叉验证结果导出到数据框中?