linux 正则匹配 删除文件中不包含某字符串的行

linux 正则匹配 删除文件中不包含某字符串的行,第1张

你的正则表达式 ^((?!bbb).)/d 几乎正确,但缺少一个关键点。这个表达式使用了负向前瞻断言 (?!bbb) 来匹配不包含 bbb 子字符串的行。但是它还需要一个具体的匹配字符或字符集,以便用于匹配行的所有其他内容。

你可以尝试将表达式修改为 ^[^b]*(?!bbb).*$,它将匹配行首的任何数量的非 b 字符,然后检查该行是否包含 bbb,然后最终匹配行末的所有字符。这样,对于所有不包含 bbb 的行,该表达式将与行完全匹配,从而允许 sed 工具将其删除。

因此,你可以使用以下命令来删除文件中不包含子字符串 bbb 的所有行:

Copy code

sed -i '/^[^b]*\(bbb\)\?$/d' filename

如果要在脚本文件中使用,则可以将其存储在 delete_lines.sh 中:

Copy code

#!/bin/bash

sed -i '/^[^b]*\(bbb\)\?$/d' "$1"

然后,在终端中运行以下命令:

Copy code

chmod +x delete_lines.sh

./delete_lines.sh filename

这将执行 delete_lines.sh 脚本并删除文件 filename 中不包含子字符串 bbb 的所有行。

     很多朋友都想知道linux如何删除指定文件?下面就一起来看看吧!

      linux删除指定文件

      1、打开linux系统,在linux的桌面的空白处右击。

      2、在d出的下拉选项里,点击打开终端。

      3、输入rm+文件名命令即可删除指定文件。

      本文章基于ThinkpadE15品牌、centos7系统撰写的。

以查找和删除mp3为扩展的文件为例:

find / -name "*.mp3" |xargs rm -rf

会删除所有以mp3为扩展的文件。 *** 作的时候先:

find / -name "*.mp3"

会打印出匹配的文件,如果觉得正是想删除这些文件,再执行:

find / -name "*.mp3" |xargs rm -rf


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11763883.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存