当前位置: 首页 > 面试题库 >

如何检查sed是否已更改文件

华甫
2023-03-14
问题内容

我试图找到一种聪明的方法来找出传递给sed的文件是否已成功更改。

基本上,我想知道文件是否已更改,而不必查看文件修改日期。

我之所以需要这样做,是因为如果sed成功替换了模式,我需要做一些额外的事情。

我目前有:

    grep -q $pattern $filename
    if [ $? -eq 0 ]
    then
        sed -i s:$pattern:$new_pattern: $filename
                # DO SOME OTHER STUFF HERE
    else
        # DO SOME OTHER STUFF HERE
    fi

上面的代码有点贵,我希望能够在这里使用一些技巧。


问题答案:

您可以awk改用:

awk '$0 ~ p { gsub(p, r); t=1} 1 END{ exit (!t) }' p="$pattern" r="$repl

我忽略了该-i功能:您可以根据需要使用Shell做重定向。

叹。下面有许多评论要求提供有关shell的基础教程。您可以按以下方式使用上面的命令:

if awk '$0 ~ p { gsub(p, r); t=1} 1 END{ exit (!t) }' \
        p="$pattern" r="$repl" "$filename" > "${filename}.new"; then
    cat "${filename}.new" > "${filename}"
    # DO SOME OTHER STUFF HERE
else
    # DO SOME OTHER STUFF HERE
fi

我不清楚“ DO SOME OTHER STUFF HERE”在每种情况下是否相同。两个块中任何类似的代码都应进行相应的重构。



 类似资料:
  • 除了比较全部内容之外,是否有一种可靠的方法来检查驱动器中的文件是否更新/更改? 我将一个纯文本文件上传到Google Drive(简单上传,更新endpoint),并从成功上传后返回的文件元数据中保存。 然后,我偶尔轮询驱动器API(get endpoint)以检查版本是否已更改。 问题是,在上传文件的一两秒钟内,版本又会被提升。 文件内容没有更改。该文件尚未在其他任何地方打开、查看或下载。不过,

  • 问题内容: 在我的模型中,我有: 第一次修改效果很好。 有人修改别名上的时,如何获取新图像?其次,是否有更好的方法来缓存远程映像? 问题答案: 本质上,你想覆盖方法,以便保留原始值的副本。这样一来,你就不必进行其他数据库查找(这总是一件好事)。

  • 问题内容: 每当在特定目录中添加/删除/修改新文件时,我都需要在python中知道吗?我正在寻找一个类似“ inofity”的功能(来自POSIX)。 谢谢 问题答案: 注意:我删除了我的答案,因为它无关紧要,并且经常被否决。 我无法删除它。

  • 问题内容: 以编程方式检查PDF文件是否被完全扫描的最佳方法是什么?我确实可以使用iText和PDFBox。我可以检查pdf文件是否包含文本,并根据结果确定该文件是否为OCRed,但是此解决方案并非100%准确。我想知道是否还有另一种方法来解决这个问题。 如您所知,解决方案必须基于Java。 问题答案: 最好的选择是检查它是否包含文本,还查看它是否包含大的页面化图像或覆盖页面的大量平铺图像。如果您

  • 问题内容: 我有一个名为Person的表,一个名为ID的列,如何检查ID是否已经是FOREIGN KEY,原因是我想使用以下代码进行修改: 但是如果ID已经是FOREIGN KEY,则由于有两个级联的情况,它给我以下错误“可能导致循环或多个级联路径” …如何检查此字段是否为FOREIGN KEY以避免此错误? 问题答案: 您想看一下视图 虽然还不如应有的完整。这是您想要的最终查询: 浏览此处获取更

  • 问题内容: 我想知道Swift对象的一组属性何时更改。以前,我已经在Objective-C中实现了此功能,但是在将其转换为Swift时遇到了一些困难。 我之前的Objective-C代码是: 我对Swift解决方案的第一遍是: 但是,编译器抱怨:“二进制运算符’!=’不能应用于两个’Any?’。操作数” 我的第二次尝试: 但是,考虑到这一点,我认为这不适用于诸如Int之类的快速对象的原语(我假设它