我有多个文件要重命名
leng-1494-001
leng-1464-002
leng-2414-004
leng-7894-005
leng-1323-006
我想重命名它
ferr-1494-001
ferr-1464-002
ferr-2414-004
ferr-7894-005
ferr-1323-006
我知道如何处理 ferr 和 leng,但是如何使用 sed 将 6 到 10 个字符(1464,7894)替换为空行,或者像 aaaa bbbb cccc 这样的字符串?也欢迎 awk 或 perl 解决方案。谢谢
答案1
使用 sed:
sed -r 's/(.*[a-zA-Z]{4}\-)([0-9]{4})/\1aaaa/g'
答案2
POSIXly:
$ sed -e 's/-[^-]*-/-/' file
leng-001
leng-002
leng-004
leng-005
leng-006
答案3
我找到了使用 perl substring 函数的解决方案
echo leng-1323-006|perl -lpe 'substr($_, 5, 5) = "";'
正确返回
leng-006
我已经从位置 5 中删除了 5 个坏字符,包括 -