+ -
当前位置:首页 → 问答吧 → 按行分割文件

按行分割文件

时间:2011-01-27

来源:互联网

  1. bash-2.03$ cat complex.txt
  2. 2aaa1 bbb1
  3. 1aaa2 bbb2
  4. 1aaa3 bbb3
  5. 3aaa4 bbb4
  6. 4aaa5 bbb5
  7. bash-2.03$ cat complex.sh
  8. #!/bin/bash
  9. cat complex.txt | while read line; do

  10. case  `echo $line | cut -c 1` in
  11.   "1")
  12.    echo $line >>1.txt;;
  13.   "2")
  14.    echo $line >>2.txt;;
  15.   "3")
  16.    echo  $line >>3.txt;;
  17.   *)
  18.    echo $line;;

  19. esac
  20. donebash-2.03$ ./complex.sh
  21. 4aaa5 bbb5
  22. bash-2.03$
复制代码
效率还能提高么?

作者: clonescopy   发布时间: 2011-01-27

for i in {1..4};do grep ^$i lines4 && echo "++++++++++++++";done
1aaa2 bbb2
1aaa3 bbb3
++++++++++++++
2aaa1 bbb1
++++++++++++++
3aaa4 bbb4
++++++++++++++
4aaa5 bbb5
++++++++++++++

作者: 昭襄王   发布时间: 2011-01-27

awk 'BEGIN{FS=""}{if ($1<=3) {print >$1".txt"} else print }' file

作者: 99超人   发布时间: 2011-01-27

split -l1 urfile

作者: shileiadmin   发布时间: 2011-01-27

  1. bash-2.03$ for i in {1..4};do grep ^$i complex.txt && echo "++++++++++++++";done
  2. bash-2.03$
复制代码

作者: clonescopy   发布时间: 2011-01-27

awk  '{print > substr($1,1,1)".txt" }' file

作者: yinyuemi   发布时间: 2011-01-27



QUOTE:
awk 'BEGIN{FS=""}{if ($1$1".txt"} else print }' file
99超人 发表于 2011-01-27 16:34

  1. bash-2.03$ awk 'BEGIN{FS=""}{if ($1<=3) {print >$1"z.txt"} else print }' complex.txt
  2. 3aaa4 bbb4
  3. 4aaa5 bbb5
复制代码

作者: clonescopy   发布时间: 2011-01-27



QUOTE:
split -l1 urfile
shileiadmin 发表于 2011-01-27 16:35




    这位兄弟 split不适用这个场景 不要骗我哦:D

作者: clonescopy   发布时间: 2011-01-27

回复 clonescopy


    难道是awk版本问题,我这里不会

[oracle@imeg02 zgw]$ cat file
2aaa1 bbb1
1aaa2 bbb2
1aaa3 bbb3
3aaa4 bbb4
4aaa5 bbb5
[oracle@imeg02 zgw]$  awk 'BEGIN{FS=""}{if ($1<=3) {print >$1".txt"} else print }' file
4aaa5 bbb5

作者: 99超人   发布时间: 2011-01-27



QUOTE:
awk  '{print > substr($1,1,1)".txt" }' file
yinyuemi 发表于 2011-01-27 16:42

  1. bash-2.03$ ./test.sh
  2. Fri Jan 28 03:33:20 EST 2011
  3. Fri Jan 28 03:34:37 EST 2011
复制代码
60M文件

作者: clonescopy   发布时间: 2011-01-27

  1. #!/bin/sh
  2. #complex.sh

  3. num=1
  4. while read line
  5. do
  6.         echo "$line" > "$num".txt;
  7.         ((num++))
  8. done < urfile
复制代码
回复 clonescopy

作者: shileiadmin   发布时间: 2011-01-27



QUOTE:
回复  clonescopy
shileiadmin 发表于 2011-01-27 17:03




    还是不对,改

作者: 昭襄王   发布时间: 2011-01-27

回复 昭襄王


    哦,楼主是要按标识来分割文件,嗨~

作者: shileiadmin   发布时间: 2011-01-27