草庐IT

linux - sed 仅最后一个匹配模式

我只想sed文本文件的最后一个匹配模式。输入文件:boyboygirlboy输出文件:boyboygirlboys 最佳答案 一种方法是反转文件,只替换第一个匹配项,然后再反转回来。tac|sed'1s/boy/boys/'|tac|spongetac将“反向连接和打印文件”。sponge将“吸收标准输入并写入文件”。它在debian上的“moreutils”包中。 关于linux-sed仅最后一个匹配模式,我们在StackOverflow上找到一个类似的问题:

linux - 如何在 linux 中显示匹配正则表达式的所有行

我想显示匹配正则表达式的所有行如果我有一个文件foobar123baz12435loremipsumdolorsitamet这个display-frombaz[0-9]*souldreturn(是否显示匹配行无关紧要)loremipsumdolorsitamet我如何在Linux中执行此操作(使用sed、awk或grep) 最佳答案 只需使用grep:$grep-E'baz[0-9]*'file-A9999在这里,'-A'选项告诉grep在匹配后显示多少行。它有点笨拙,但如果输入文件的长度有上限,它可能会正常工作。

linux - 如何在 linux 中显示匹配正则表达式的所有行

我想显示匹配正则表达式的所有行如果我有一个文件foobar123baz12435loremipsumdolorsitamet这个display-frombaz[0-9]*souldreturn(是否显示匹配行无关紧要)loremipsumdolorsitamet我如何在Linux中执行此操作(使用sed、awk或grep) 最佳答案 只需使用grep:$grep-E'baz[0-9]*'file-A9999在这里,'-A'选项告诉grep在匹配后显示多少行。它有点笨拙,但如果输入文件的长度有上限,它可能会正常工作。

regex - 重复正则表达式替换为 SED

我有以下几行(实际上有~1M这些行):foo|||barqux||boo|fzx请注意,每行恰好包含4个字段,但字符数可以超过3个。我想要做的是用|nil|替换每个||结果:foo|nil|nil|barqux|nil|boo|fzx用sed有什么办法呢?我试过了但是失败了:sed's/||/|nil/g' 最佳答案 你需要重复替换直到它不改变:sed':a;s/||/|nil|/g;ta'但是这不会处理开头或结尾的空字段,为此您还需要两种模式:sed's/^|/nil|/;s/|$/|nil/;:a;s/||/|nil|/g;ta

regex - 重复正则表达式替换为 SED

我有以下几行(实际上有~1M这些行):foo|||barqux||boo|fzx请注意,每行恰好包含4个字段,但字符数可以超过3个。我想要做的是用|nil|替换每个||结果:foo|nil|nil|barqux|nil|boo|fzx用sed有什么办法呢?我试过了但是失败了:sed's/||/|nil/g' 最佳答案 你需要重复替换直到它不改变:sed':a;s/||/|nil|/g;ta'但是这不会处理开头或结尾的空字段,为此您还需要两种模式:sed's/^|/nil|/;s/|$/|nil/;:a;s/||/|nil|/g;ta

linux - 需要删除grep结果文件的前N行

我正试图解决我的一些wordpress安装中的黑客问题。这家伙在我服务器上的多个文件的头部放置了9行代码......我正在尝试使用grep和sed来解决这个问题。我正在尝试:grep-r-l"//360cdn.win/c.css"|xargs-0sed-e'1,9d'但是什么也没有发生,如果我从xargs中删除-0,找到的文件的结果是干净的,但它们没有用sed覆盖原始文件`结果,有人可以帮我吗?非常感谢! 最佳答案 你应该在grep命令中使用--null选项来在中的每个文件名后输出一个NUL字节或\0grep输出。还可以在sed中使

linux - 需要删除grep结果文件的前N行

我正试图解决我的一些wordpress安装中的黑客问题。这家伙在我服务器上的多个文件的头部放置了9行代码......我正在尝试使用grep和sed来解决这个问题。我正在尝试:grep-r-l"//360cdn.win/c.css"|xargs-0sed-e'1,9d'但是什么也没有发生,如果我从xargs中删除-0,找到的文件的结果是干净的,但它们没有用sed覆盖原始文件`结果,有人可以帮我吗?非常感谢! 最佳答案 你应该在grep命令中使用--null选项来在中的每个文件名后输出一个NUL字节或\0grep输出。还可以在sed中使

linux - 使用 bash 脚本更新 CRON

谁能在这里看到我的语法错误?尝试编辑/更新cron作业,但文件未更新。crontab-l|sed's%*/5****cd/home/administrator/anm-1.5.0&&./anm.sh%*/10****cd/home/administrator/anm-1.5.0&&./anm.sh%'|crontab-*更新*所以我仍然有这个问题。最终,我试图从配置文件$FREQ(minutes)中提取一个值来运行该作业。该脚本将首先检查配置中的值是否与crontab中当前的值不同。如果值不同,它将使用新值更新crontab。crontab(初始安装和更新)还从变量中提取运行目录和脚本

linux - 使用 bash 脚本更新 CRON

谁能在这里看到我的语法错误?尝试编辑/更新cron作业,但文件未更新。crontab-l|sed's%*/5****cd/home/administrator/anm-1.5.0&&./anm.sh%*/10****cd/home/administrator/anm-1.5.0&&./anm.sh%'|crontab-*更新*所以我仍然有这个问题。最终,我试图从配置文件$FREQ(minutes)中提取一个值来运行该作业。该脚本将首先检查配置中的值是否与crontab中当前的值不同。如果值不同,它将使用新值更新crontab。crontab(初始安装和更新)还从变量中提取运行目录和脚本

linux - 如何在 Linux 上使用 exec 选项转义传递给 find 的命令

让我将我的问题分解为尽可能简单的示例。创建一个包含一行文本的测试文件。[root@myserver]/tmp>echo"testReplaceMeDoNotReplaceMe">/tmp/daj.txt我们有一个现有的find命令,我们用它来替换所有匹配它的文件中的文本(在这个例子中,我简化了这个命令只适用于一个文件,并去掉了它做的其他事情)。问题在于它会在出现的任何地方替换“ReplaceMe”,而不是仅在它本身是一个词时才替换。[root@myserver]/tmp>find/tmp/daj.txt-execsh-c'f="{}";sed-e's/ReplaceMe/#DONE#/