删除文件中与模式不匹配的行

赫兹

我正在尝试迁移由很多单独的文本文件组成的数据。第一步是删除文本文件中的所有不再使用的行。这些行是键值对。我想删除文件中除带有某些键的那些行以外的所有内容。我不知道文件内键的顺序。

我要保留的密钥例如是版本,日期和数字。

我发现了这个问题,删除除匹配模式行最佳实践(sed)以外的所有行,并尝试了接受的答案。我的sed命令是

sed '/^(version=.*$)|(date=.*$)|(number=.*$)/!d' file.txt

在地址后加上!d,以删除所有与模式不匹配的行。

正则表达式的示例:https : //regex101.com/r/LKfxpP/2

但它会不断删除文件中的所有行。我的错误在哪里?我认为我的正则表达式错了,但是这里的错误是什么?

维克多·史翠比维

您可以使用

sed '/^\(version\|date\|number\)=/!d' file.txt > newfile.txt

此处的BRE POSIX模式匹配

  • ^ -一行的开始
  • \(version\|date\|number\) -一组匹配
    • version-一个version字符串
    • \| - 要么
    • date-一个date字符串
    • \| - 要么
    • number-一个number字符串
  • =-一个=字符

或者,使用带-E选项启用的POSIX ERE语法

sed -E '/^(version|date|number)=/!d' file.txt > newfile.txt

在这里,交替运算符|和捕获括号不需要转义。

观看在线演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用sed从文件中删除与模式不匹配的行

在模式匹配之间从文件中删除行

如何从文件中删除在特定范围内与模式或arent不匹配的行

删除文件中不包括linux中匹配模式的行

使用 xargs 删除不匹配模式的文件

删除所有不匹配模式的行

如何从文件中删除与行匹配的特定模式

如果模式匹配,则在文件中插入/删除行

如何使用 Tcl/Expect 从文件中删除匹配模式的行

从文件中删除匹配的行

从M3U文件中删除与模式不匹配的多行

删除与Linux中的模式匹配的行/内容

删除文件匹配模式

删除目录中名称与文件列表中的一行不匹配的所有文件

不匹配模式时使用 sed 删除行字符

删除与sed模式不匹配的所有行

awk:打印与文件中模式不匹配的行,查看特定列

如何在多个文件中注释与 gvim 中的模式不匹配的行

从字符串中删除与JSON模式不匹配的内容

比较文件中的两行,如果模式匹配则删除它们

如何使用 bash 命令删除文本文件中匹配多个模式的行?

从另一个文件中删除与特定模式匹配的行

如何仅在模式的第一个匹配之后删除日志文件中的n行

从要匹配的模式超过10个的CSV文件中删除不需要的行

如何使用Perl删除模式匹配和文件中的其余行

PHP搜索不匹配文件中的行

使用sed匹配模式并从行删除到文件末尾

sed删除2个文件之间匹配模式的行

在多个文件中删除模式后的行