如何修改AWK gsub命令生成的文件名:将wenotnotfoo1替换为foo1?
调整AWK生成的文件名:可行方案
没问题呀,有几种简单的方法可以帮你搞定文件名调整的需求,分两种场景来说:
一、还没生成文件?直接在AWK里修改输出逻辑
如果你还没运行AWK命令生成文件,或者可以重新运行的话,直接在AWK脚本里修改文件名的生成规则就好,一步到位。
比如你原来的AWK命令可能是类似这样(生成带wenotnot前缀的文件名):
{ # 你已有的内容处理逻辑(比如gsub操作) print > "wenotnot" $1 # 这里生成了wenotnotfoo1这类文件名 }
那只要在生成文件名的时候,用gsub去掉前缀(或者按你的规则修改)就行:
{ # 保留你已有的内容处理逻辑 filename = "wenotnot" $1 # 先拿到原来的文件名 gsub(/^wenotnot/, "", filename) # 去掉开头的wenotnot前缀 print > filename # 输出到修改后的文件名,比如foo1 }
如果你的文件名替换规则更复杂(比如不是固定前缀,而是特定模式),只要调整gsub的正则就行。比如要把wenotnot(foo\d+)改成\1,就把正则写成gsub(/^wenotnot(foo[0-9]+)/, "\\1", filename)。
二、已经生成文件了?用Shell批量重命名
如果已经生成了一堆带前缀的文件,不想重新跑AWK,那用Shell命令批量重命名更高效。
方法1:结合sed和mv
在bash/zsh里直接运行:
for file in wenotnot*; do newname=$(echo "$file" | sed 's/^wenotnot//') mv "$file" "$newname" done
方法2:用awk处理文件名
如果你更习惯awk的语法,也可以这样:
for file in wenotnot*; do newname=$(echo "$file" | awk '{gsub(/^wenotnot/,""); print}') mv "$file" "$newname" done
这两种方法都会把所有以wenotnot开头的文件,去掉前缀改成你要的名字,比如wenotnotfoo1→foo1。
内容的提问来源于stack exchange,提问作者wanhwai
相关产品推荐
相关产品推荐

