我在Linux机器上使用grep、sed和cut命令执行一些操作:
zgrep -A1 "^module" *.v.gz | sed -n -e 's/^\(module \)*\(.*(.*)\).*$/\2/p' | cut -f1 -d"("这是在扩展名为.v.gz的文件上运行的,我希望输出文件有一个.txt扩展名。
例如,输入文件名:
abcd.v.gz
efgh.v.gz
ijkl.v.gz
mnop.v.gz输出文件名
abcd.txt
efgh.txt
ijkl.txt
mnop.txt因此,我希望保留相同的文件名前缀,但更改扩展名。对于任意数量的文件,我如何做到这一点?
发布于 2022-11-16 17:18:02
在这种情况下,我使用shell循环:
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脚本,它看起来如下:
#!/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
donehttps://unix.stackexchange.com/questions/725132
复制相似问题