我已经阅读了其他几个有关此问题的问题,但似乎没有一个问题在起作用。我目前正在尝试使用分隔符“STOPHERE”分割文件A.txt之类的内容。
这是代码:
#!/bin/bash
awk 'BEGIN{
RS = "STOPHERE"
file = 0}
{
file++
print $0 > ("sepf" file)
}' A.txt
档案A:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa lwdjnuqqfqaaaaaaaaaa qlknfqek fkgnl efekfnwegelflfne
ldnwefne f STOPHEREsdfnkjnf nnnnnnnnnnnnnnnnnnnnnnnasd fefffffffffffffflllo
aldn3orn STOPHERE
fknjke bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbowqff STOPHERE i
asfjfenf STOPHERE
进入这些:
sepf1:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa lwdjnuqqfqaaaaaaaaaa qlknfqek fkgnl efekfnwegelflfne
ldnwefne f
sepf2:
sdfnkjnf nnnnnnnnnnnnnnnnnnnnnnnasd fefffffffffffffflllo
aldn3orn
sepf3:
#line starts here
fknjke bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbowqff
sepf4:
i
asfjfenf
基本上,格式化必须在STOPHERE之间保持完全相同。
但由于某种原因,这是我在某些文件中得到的那种输出:
例如:sepf2
TOPHEREsdfnkjnf nnnnnnnnnnnnnnnnnnnnnnnasd fefffffffffffffflllo
aldn3orn
关于为什么“TOPHERE”仍然存在的任何想法?
答案 0 :(得分:0)
GNU awk允许RS成为正则表达式。因此,您可以提供多个字符作为记录分隔符。您的代码也可以简化,因为AWK提供的默认值为0。 因此,这将为每条记录生成单独的文件。
awk -v RS="STOPHERE" '{print $0 > ("sepf" ++file)}'