Chinaunix
标题:
切割文件 求教
[打印本页]
作者:
skytalemcc
时间:
2014-10-10 23:24
标题:
切割文件 求教
有一个文件,我想把它切成多份。把多个以begin 开头的数据块切割出来
内容
begin 1234
122344
223233
2233
begin 24334
44
sdfsd
456dfg
sdf
begin sdfd3445
dsafwf
sdf4tr234
3fdf
输出结果为
begin 1234
122344
223233
2233
-----------------------------
begin 24334
44
sdfsd
456dfg
sdf
-------------
begin sdfd3445
dsafwf
sdf4tr234
3fdf
作者:
skytalemcc
时间:
2014-10-10 23:27
补充一下 ,能不能输出结果为第几行到第几行 。
例如刚才就是1到4,5到9,10到13
作者:
wiliiwin
时间:
2014-10-10 23:50
# awk '/^begin/{if(NR>1){print "-------"};print NR,$0;next}{print NR,$0;}' 15.txt
1 begin 1234
2 122344
3 223233
4 2233
-------
5 begin 24334
6 44
7 sdfsd
8 456dfg
9 sdf
-------
10 begin sdfd3445
11 dsafwf
12 sdf4tr234
13 3fdf
复制代码
作者:
李满满
时间:
2014-10-10 23:54
学生党:飘过~无聊用Python试试
$ cat yhsafe.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"just for fun"
import re
import sys
import fileinput
for x in re.findall(r'^b[^b]*',open(sys.argv[1]).read(),re.M):
print x.split('\n')[0]
print '\n'.join(x.split('\n')[1:]),
print '-'*20
复制代码
测试:
$ ./yhsafe.py yhsafe.txt
begin 1234
122344
223233
2233
--------------------
begin 24334
44
sdfsd
456dfg
sdf
--------------------
begin sdfd3445
dsafwf
sdf4tr234
3fdf
--------------------
begin sdfd3445
dsafwf
sdf4tr234
3fdf
作者:
reb00t
时间:
2014-10-11 02:26
awk -vRS='begin' 'NR>2{print RS,s"--------------------"}{s=$0}END{print s}'
sed -rn '{1h;1!H;${g;s/\nbegin/\n-------------\nbegin/gp}}' 1
复制代码
作者:
ly5066113
时间:
2014-10-11 08:24
回复
1#
skytalemcc
try:
awk '/begin/{if(NR>1)print "----- "n"-"NR-1" -----";n=NR}1;END{print "----- "n"-"NR" -----"}' file
复制代码
作者:
yestreenstars
时间:
2014-10-11 09:01
sed ':1;n;/^begin/s/^/------\n/;b1'
复制代码
作者:
zxy877298415
时间:
2014-10-11 09:34
回复
1#
skytalemcc
awk -F "\n" -v RS="begin" -v ORS="-------\n" 'NR>1{if(!s) {s=1;print "begin"$0"------" s "-" NF-1;s=NF}
else {print "begin" $0 "------" s "-" NF-2+s;s+=NF-1} }' FILE
作者:
stupid_lee
时间:
2014-10-11 09:52
sed '2,${/begin/{x;p;x}}' cc01.txt |sed 's/^$/-----------/' -r
复制代码
作者:
stupid_lee
时间:
2014-10-11 10:11
回复
7#
yestreenstars
sed '2,${/begin/s/^/----------\n/}' 借鉴您的,不循环如何
作者:
yestreenstars
时间:
2014-10-11 10:28
回复
10#
stupid_lee
应该差不多~{:3_193:}
作者:
tasteoftime_90
时间:
2014-10-11 17:01
awk 'BEGIN{RS="begin +"}{printf a;a=RT}{printf $0}{printf A;A="--------""\n"}'
作者:
skytalemcc
时间:
2014-10-19 16:55
谢谢大家 你们太可爱了
作者:
rulebook
时间:
2014-10-20 10:29
csplit file /begin/ {*} -s -n2 -f "file" -b "%02d.txt"
作者:
toddhai
时间:
2016-05-06 11:06
awk -vRS="begin" '$0{print RS $0"-----------------------------\n"}' urfile
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2