bash - 使用 xargs 通过破折号拆分文件内容字符串
问题描述
我需要读取一个文件并将每一行拆分为一个域和一个应用程序字符串
domain.com-backend
domain.com-frontend
对于每一行,我需要调用一个 docker build 命令(回显只是为了查看命令):
cat $FILE | grep '-' | xargs -I {} echo docker build -t {full} -f apps/{domain}/{application}/Dockerfile .
所以在这个例子中,我希望输出
docker build -t domain.com-backend -f apps/domain.com/backend/Dockerfile .
docker build -t domain.com-frontend -f apps/domain.com/frontend/Dockerfile .
解决方案
你可以用这个循环来做到这一点:
while read -r x; do
echo docker build -t "$x" -f "apps/${x/-/\/}/Dockerfile" .
done < "$FILE"
测试后删除echo
。
查看更多bash 参数扩展
如果您想首先过滤文件,例如那里有更多行并且您希望首先grep "-"
在您的示例中喜欢,您可以使用以下语法(仅限 bash):
while read -r x; do
echo docker build -t "$x" -f "apps/${x/-/\/}/Dockerfile" .
done < <(grep "-" "$FILE")
推荐阅读
- google-slides-api - 如何通过 Google Slides API 将对象形状图像蒙版应用于图像
- c# - xUnit,Moq - 测试 .Net Core 存储库
- javascript - Firebase 存储下载到用户计算机
- youtube-api - Google API(youtube 搜索)总是按相关性而不是日期对结果进行排序
- android - 未调用 RecyclerView 标头的 OnClickListener
- ocaml - 创建一个可以更新的大小为 x 的空字符串数组
- ios - CollectionViewCell 绘制矩形
- c++ - C++ 指针不存储值
- php - PHP:如何生成字符串的 hmac SHA1 签名?
- c# - Roslyn:从基本块获取指令