我正在尝试迁移由很多单独的文本文件组成的数据。第一步是删除文本文件中的所有不再使用的行。这些行是键值对。我想删除文件中除带有某些键的那些行以外的所有内容。我不知道文件内键的顺序。
我要保留的密钥例如是版本,日期和数字。
我发现了这个问题,删除除匹配模式行最佳实践(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] 删除。
我来说两句