gpt4 book ai didi

linux - 按行内容拆分文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:38 24 4
gpt4 key购买 nike

我有一个包含以下内容的文件。

aaaa
bbbb
cccc
1111
qqqq
1111
aaaa
dddd

以1111为分隔符拆分成多个小文件,我尝试的方法如下。

#!/bin/bash
i=0
while read line
do
if [[ $line =~ '1111' ]];then
((i++))
else
echo $line >> $i.txt
fi
done < data.txt

拆分成几个文件如下

0.txt
aaaa
bbbb
cccc

1.txt
qqqq

2.txt
aaaa
dddd

但是我想得到更简洁的方法,怎么办?

最佳答案

有一个专门为此构建的实用程序。尝试:

csplit -f '' -b'%d.txt' --suppress-matched data.txt /1111/ '{*}'

工作原理:

  • -f '' -b'%d.txt'

    这两个选项告诉 csplit 以单个数字命名输出文件,并在末尾添加 .txt

  • --抑制匹配

    这告诉 csplit 省略分隔线。

  • data.txt

    这是要分割的文件。

  • /1111/

    这是用作分隔符的正则表达式模式。

  • {*}

    这会告诉 csplit 在找到分隔线时进行多次分割。

关于linux - 按行内容拆分文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57282083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com