【问题标题】:The proper format of a 'sed' command?“sed”命令的正确格式?
【发布时间】:2017-06-29 00:38:07
【问题描述】:

我正在尝试重命名一些文件,需要帮助格式化正确的“sed”命令;

我有一个像这样的电影剧集文件;

SG1_s10e8"Memento Mori"
SG1_s10e9"Company of Thieves"
SG1_s10e10"The Quest"
SG1_s10e11"The Quest Part 2"

我需要用这样的“0”填充第 # 集;

SG1_s10e08"Memento Mori"
SG1_s10e09"Company of Thieves"
SG1_s10e10"The Quest"
SG1_s10e11"The Quest Part 2"

我确定 sed 是正确的工具,我只是不太喜欢命令语法。

我将不胜感激。

【问题讨论】:

    标签: bash awk sed


    【解决方案1】:

    你可以试试这个:

    sed 's/e\([0-9]\)"/e0\1"/'
    

    【讨论】:

    • 不错,但例如 SG1_s10e08"Memento More9" 会失败。
    • 否,因为它只替换第一次出现;结尾的 g 会发生这种情况,如在 's///g' 中,但不是在 's//' 中。对吗?
    • 一开始我有错误的例子,现在用正确的例子编辑了我的评论。对不起。我的意思是,如果e[0-9]" 没有出现在双引号字符串开始之前的预期位置,但确实出现在字符串的末尾,那么替换将发生在那个错误的位置。
    • 是的。您必须像以前一样添加更多内容。
    【解决方案2】:
    sed 's/e\([0-9]"[^"]*"\)/e0\1/' file
    

    【讨论】:

    • 你能解释一下e在上面的表达式中做了什么吗? ty
    • @jes516 仔细查看输入数据和所需的输出,并思考为什么e 很重要。
    猜你喜欢
    • 2017-07-25
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 2016-01-26
    • 2012-10-29
    相关资源
    最近更新 更多