我有这个文件1.txt
:
-e a
b
-e c
d
-e e
f
我想将其拆分为以下两个文件。
2.txt
-e a
-e c
-e e
3.txt
b
d
f
where2.txt
包含以 开头的所有行-e
,并3.txt
包含所有其他行。可以忽略或保留额外的换行符(例如原始中间的额外换行符),并且顺序无关紧要。
我尝试过使用split
,但它看起来不允许我使用模式进行拆分(而不是每个拆分文件的固定行数)。
我有这个文件1.txt
:
-e a
b
-e c
d
-e e
f
我想将其拆分为以下两个文件。
2.txt
-e a
-e c
-e e
3.txt
b
d
f
where2.txt
包含以 开头的所有行-e
,并3.txt
包含所有其他行。可以忽略或保留额外的换行符(例如原始中间的额外换行符),并且顺序无关紧要。
我尝试过使用split
,但它看起来不允许我使用模式进行拆分(而不是每个拆分文件的固定行数)。
使用
grep
:@braemar:使用
grep -v
相同的正则表达式会错误地检测空行、文本行等。不是想要的。这是
awk
解决方案:性能测试:
保留空行:
给予
如果您喜欢省略空行,则在最后写入时添加“任何字符”正则表达式:
这是
sed
使用d
elete标志的解决方案:上面的命令有两个正则表达式,第一个
'/^-/!d'
将匹配所有不以开头的行-
并将它们从输出中删除,第二个'/^[[:space:]]*$/d'
将匹配所有仅包含空格的行并将它们从输出中删除。上面的命令也有两个正则表达式,第一个
'/^-/d'
将匹配所有以开头的行-
并将它们从输出中删除,第二个与预览情况相同。另一种方法是保留
-n
正常输出,sed
然后p
仅对匹配的行进行 rint:这是一个性能测试: