【问题标题】:add line to a file ONLY if it is not in file already [duplicate]仅当文件不在文件中时才向文件添加行[重复]
【发布时间】:2013-07-18 20:29:41
【问题描述】:

我想添加以下行:

nohup java -jar /mnt/fusion/nfs/labStats/LabInfoAutoLog.jar > /dev/null &

到文件/etc/rc.d/rc.local 的末尾,如果它不存在的话。

我怎样才能从 linux 命令行中做到这一点?我假设grepsed 会起作用,但我对它们都不够熟悉,无法让它起作用。现在我使用echo,但它只是一遍又一遍地添加它。

【问题讨论】:

    标签: linux sed grep


    【解决方案1】:

    假设您希望它在文件末尾:

    LINE="nohup java -jar /mnt/fusion/nfs/labStats/LabInfoAutoLog.jar > /dev/null &"
    FILE=/etc/rc.d/rc.local
    grep -q "$LINE" "$FILE" || echo "$LINE" >> "$FILE"
    

    【讨论】:

      【解决方案2】:

      一个选项是两个步骤:

      grep -q "yourline" /path/file||sed -i '/..place../ a \the line' file
      

      也可以使用 awk,

      保存数组中的所有行,保存期间如果找到该行,则退出。否则,将END{} 块中的行添加到正确的位置。

      附: 您没有在文件中说明在哪里添加该行。

      【讨论】:

      • +1 以获得比我的更清洁的解决方案。我认为他只是想附加它。
      • 他说目前使用echo,所以它将是最后一个(美元符号sed)。
      • @Birei 当我回答时,没有echo 部分。 :( 但如果他使用回声,你是对的。它应该到最后一行。
      猜你喜欢
      • 2011-04-03
      • 2012-10-05
      • 1970-01-01
      • 2014-05-12
      • 1970-01-01
      • 2021-02-12
      • 1970-01-01
      • 2016-09-05
      相关资源
      最近更新 更多