gpt4 book ai didi

sed - 删除行尾包含模式的行

转载 作者:行者123 更新时间:2023-12-03 16:45:18 25 4
gpt4 key购买 nike

我当然想念一些基本的东西。我的文件包含类似的行

fooLOCATION=sdfmsvdnv

fooLOCATION=

barLOCATION=sadssf

barLOCATION=

我想删除所有以 LOCATION= 结尾的行.
sed -i '/LOCATION=$/d' file

不这样做,它不会删除任何内容,我尝试了无穷无尽的变化,但我不明白。什么内联 sed 命令可以做到这一点?

最佳答案

这里有两种方法,要么打印所有不匹配的行

sed -in '/LOCATION=$/!p' file

或删除所有匹配的名称
sed -i '/LOCATION=$/d' file

第一个使用 命令行选项来抑制打印行的默认操作。然后我们测试以 LOCATION= 结尾的行并反转模式(只保留那些不匹配的)。当我们得到一个想要的行时,我们用 p 选项打印它。

第二个查找与行尾模式匹配的行,并删除那些匹配的行。

您的文件包含空行,而这两个都保留这些。如果我们不想保留这些,我们可以将第一个选项更改为
sed -in '/^$/!{/LOCATION=$/!p}' file

它首先检查一行是否不为空,如果它不为空,则只检查是否应该打印它。我们可以将第二个选项修改为
sed -i '/^$/d;/LOCATION=$/d' file

它删除空行,然后检查是否删除其他模式。

我们可以通过指定模式的差异来修改选项以处理不同的行尾。 Unix/Linux ( \n ) 和 Windows ( \r\n ) 上的行结束符之间的区别在于 Windows 上存在额外的回车符。修改上面的四个命令以接受其中之一,我们得到
  • sed -in '/LOCATION=\r\{0,1\}$/!p' file
  • sed -i '/LOCATION=\r\{0,1\}$/d' file
  • sed -in '/^\r\{0,1\}$/!{/LOCATION=\r\{0,1\}$/!p}' file
  • sed -i '/^\r\{0,1\}$/d;/LOCATION=\r\{0,1\}$/d' file

  • 请注意,在每一个中,我们都允许一个可选的 \r在行尾之前。我们使用大括号表示法,因为 sed 在正常模式下不支持问号可选量词(使用 r GNU sed 选项以启用扩展正则表达式,我们可以将 \{0,1\} 替换为 ? )。

    在 Windows shell 上,以上所有选项都需要双引号而不是单引号。

    关于sed - 删除行尾包含模式的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35928888/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com