首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令,用于多输入和多输出。

问命令,用于多输入和多输出。
EN

Unix & Linux用户
提问于 2022-11-16 13:12:17
回答 1查看 123关注 0票数 1

我在Linux机器上使用grep、sed和cut命令执行一些操作:

代码语言:javascript
复制
zgrep -A1 "^module" *.v.gz | sed -n -e 's/^\(module \)*\(.*(.*)\).*$/\2/p' | cut -f1 -d"("

这是在扩展名为.v.gz的文件上运行的,我希望输出文件有一个.txt扩展名。

例如,输入文件名:

代码语言:javascript
复制
abcd.v.gz
efgh.v.gz
ijkl.v.gz
mnop.v.gz

输出文件名

代码语言:javascript
复制
abcd.txt
efgh.txt
ijkl.txt
mnop.txt

因此,我希望保留相同的文件名前缀,但更改扩展名。对于任意数量的文件,我如何做到这一点?

EN

回答 1

Unix & Linux用户

发布于 2022-11-16 17:18:02

在这种情况下,我使用shell循环:

代码语言:javascript
复制
for file in *.v.gz; do zgrep -A1 "^module" "$file" | sed -n -e 's/^\(module \)*\(.*(.*)\).*$/\2/p' | cut -f1 -d"(" > $(basename "$file" .v.gz).txt; done

如果您的shell具有用于此类操作的基元,则甚至可能不需要basename命令。

作为一个完整的shell脚本,它看起来如下:

代码语言:javascript
复制
#!/bin/bash

for file in *.v.gz
do
    zgrep -A1 "^module" "$file" | sed -n -e 's/^\(module \)*\(.*(.*)\).*$/\2/p' | cut -f1 -d"(" > $(basename "$file" .v.gz).txt
done
票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/725132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档