小编use*_*123的帖子

AWK,SED,REGEX重命名文件

我只是学习使用REGEX,AWK和SED.我目前有一组我想要重命名的文件 - 它们都位于一个目录中.

命名模式是一致的,但我想重新安排文件名,这里是格式:

01._HORRIBLE_HISTORIES_S2.mp4
02._HORRIBLE_HISTORIES_S2.mp4
Run Code Online (Sandbox Code Playgroud)

我想将它们重命名为HORRIBLE_HISTORIES_s01e01.mp4 - 其中e01是从第一列收集的.我知道我想从第一列中获取"01",将其填入变量中,然后将其粘贴到每个文件名中的S2之后,同时我想将其从文件名的开头与"."一起删除. _",另外我想将"S2"改为"s02".

如果有人会这么善良,你能帮助我用awk/sed写一些东西并解释一下我可以从中学到的程序吗?

regex awk filenames sed renaming

8
推荐指数
3
解决办法
1万
查看次数

使用awk和/或sed按字母顺序对文件中的行进行排序

我有一个数百行的文件格式如下:

#blah
RewriteCond %{HTTP_HOST} www.blah.com [NC]
RewriteRule ^/xyz(|/)$ http://www.blah.com/404.html [R=301,L,NC]

#xblah
RewriteCond %{HTTP_HOST} www.blah.com [NC]
RewriteRule ^/hkf(|/)$ http://www.blah.com/404.html [R=301,L,NC]

#ablah
RewriteCond %{HTTP_HOST} www.blah.com [NC]
RewriteRule ^/abc/.*(|/)$ http://www.blah.com/404.html [R=301,L,NC]
Run Code Online (Sandbox Code Playgroud)

我想在awk/sed中创建一个脚本,使用每组文本第三行中的第二个参数对该文件进行字母顺序排列.在这个文件的情况下,它是"abc","hkf"或"xyz",可以是任何东西 - 它们是在这个apache重定向文件中创建的重定向.

我想我想做的是:

  1. 将每组三条线连接成一条线,每条线之间有一个分隔符
  2. 使用sort -k3,3对行进行排序
  3. 然后用分离的空白行重新组装3行结构
  4. 写入文件

我的预期输出看起来像这样:

#ablah
RewriteCond %{HTTP_HOST} www.blah.com [NC]
RewriteRule ^/abc/.*(|/)$ http://www.blah.com/404.html [R=301,L,NC]

#xblah
RewriteCond %{HTTP_HOST} www.blah.com [NC]
RewriteRule ^/hkf(|/)$ http://www.blah.com/404.html [R=301,L,NC]

#blah
RewriteCond %{HTTP_HOST} www.blah.com [NC]
RewriteRule ^/xyz(|/)$ http://www.blah.com/404.html [R=301,L,NC]
Run Code Online (Sandbox Code Playgroud)

这有意义吗?有一个更好的方法吗?

ps我的目的是使脚本可移植,以便它可以在这个结构的几个文件上使用.在建议解决问题的代码时,请尽可能地拼出像我这样的新职级,开始了解如何有效地解决这个问题,并能够扩展最终结果.

任何和所有的帮助非常感谢.

awk sed

5
推荐指数
2
解决办法
8054
查看次数

标签 统计

awk ×2

sed ×2

filenames ×1

regex ×1

renaming ×1