#!/bin/bash
TotalFields=$(awk '{print NF}' file.txt|sort -nr|head -1) #获取file.txt的最大字段数量,假定文件名为 file.txt
k=1
for((i=1;i<=$TotalFields;i+=1))
do
cut -d" " -f${i}-$(((i+=3))) file.txt>file${k} #-d后为各字段的分隔符,自己根据实际情况指定
((k++))
done
举个例子:
[root@localhost ~]# cat file.txt
aa bb cc dd ee ff gg cc dd o k g ookk
ca bb cc ddd dee fff dgg fcc ddd o k g ookk
aa abb dcc add ee ff gg cc dd do k g ookk
aaa bb cc ddd ebe fff dgg ccf dd o dk g ookk
aa bb cyc dd ee ff gg ccd ddd o fk g ookk
[root@localhost ~]# cat test.sh
#!/bin/bash
TotalFields=$(awk '{print NF}' file.txt|sort -nr|head -1)
k=1
for((i=1;i<=$TotalFields;i+=1))
do
cut -d" " -f${i}-$(((i+=3))) file.txt>file${k}
((k++))
done
[root@localhost ~]# ./test.sh
[root@localhost ~]# ls
anaconda-ks.cfg cstudy Desktop file1 file2 file3 file4 file.txt install.log install.log.syslog jdk-6u45-linux-x64.bin test.sh VBoxLinuxAdditions.run Work
[root@localhost ~]# cat file1
aa bb cc dd
ca bb cc ddd
aa abb dcc add
aaa bb cc ddd
aa bb cyc dd
[root@localhost ~]# cat file2
ee ff gg cc
dee fff dgg fcc
ee ff gg cc
ebe fff dgg ccf
ee ff gg ccd
[root@localhost ~]# cat file3
dd o k g
ddd o k g
dd do k g
dd o dk g
ddd o fk g
[root@localhost ~]# cat file4
ookk
ookk
ookk
ookk
ookk