【发布时间】:2021-09-18 07:42:05
【问题描述】:
尝试在一堆文件中运行这些操作:
1. Swap field position and pad numbers if necessary
2. Trim file name fields to initials
3. Adjust -
一个最小的例子是这样的;
从此:
01 - Some - Else - Edu.txt
02 - Some thing - Else where - Edu.txt
3 - SOME THING - ELSE WHERE - Edu.txt
到这里:
S-E - 01 - Edu.txt
St-Ew - 02 - Edu.txt
ST-EW - 03 - Edu.txt
如何使用 (g)awk(或与其他工具结合使用,如果需要)??
【问题讨论】:
-
欢迎来到 SO,请在您的问题中以代码的形式添加您的努力,谢谢
-
perl -e 'for(@ARGV){($n,$m,$s)=/^(\d+) +- +(.*)(- .*)$/ or next; $m=~s/(.).*? +/$1/g; rename$_,sprintf"$m - %02d $s",$n}' *.txt -
@jhnc 谢谢先生,我也在尝试对 perl 的重命名做一些事情,但是我无法正确理解文档极大地限制了我的努力,我也厌倦了阅读让我无处可去的基本示例.
-
m// 以上可以接受无效输入。正则表达式应为
/^(\d+) +- +(.* )(- .*)$/(即,在第一个.*之后添加显式空格)。如果后续的 s/// 没有看到尾随空格,这可以避免输出错误。例如:01 - Some - Else- Edu.txt应被忽略,但使用原始正则表达式将变为S-Else - 01 - Edu.txt
标签: awk