Linux 如何根据模式将文件拆分为两个文件?

Linux 如何根据模式将文件拆分为两个文件?,linux,bash,split,Linux,Bash,Split,在Linux中的一个文件中,我有以下内容 123_test 234_test abc_rest cde_rest and so on 现在我想在Linux中获取两个文件。只包含如下记录的一种 123_test 234_test abc_rest cde_rest 第二个文件如下 123_test 234_test abc_rest cde_rest 我想根据之后的内容来分割文件,比如\u test或\u rest 编辑: 在Linux中如何实现这一点 我们可以使用拆分功能吗?您可以使用

Linux
中的一个文件中,我有以下内容

123_test
234_test
abc_rest
cde_rest
and so on
现在我想在
Linux
中获取两个文件。只包含如下记录的一种

123_test
234_test
abc_rest
cde_rest
第二个文件如下

123_test
234_test
abc_rest
cde_rest
我想根据
之后的内容来分割文件,比如
\u test
\u rest

编辑:

在Linux中如何实现这一点


我们可以使用拆分功能吗?

您可以使用此
awk
命令进行拆分:

awk '{ print > (/_test$/ ? "file1" : "file2") }' file

awk
命令将所有以数字开头的行复制到
file1
,其余行复制到
file2

您可以指定拆分的标准吗?以数字和字母开头的行?或者包含test和rest的行?这会覆盖每行的文件吗?因为它是一个单一的方向,并且针对每一行执行。在这种情况下,它应该被>>替换,并且文件可能会在BEGIN{}No inside
awk
中被截断,甚至
的行为类似于
>
,因此它不会为每一行重写。你是对的。gnu awk用户指南中规定:当使用这种类型的重定向时,输出文件在写入第一个输出之前被擦除。对同一输出文件的后续写入不会擦除输出文件,而是附加到输出文件。(这与在shell脚本中使用重定向的方式不同。)为什么有
$0~
?@anubhava我想将以
\u test
\u rest
结尾的文件拆分为两个不同的文件。你的回答没有解决这个问题