文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>shell中文本文件的处理(1)

shell中文本文件的处理(1)

时间:2007-05-16  来源:zhouliming9

  文件处理,一般都是批量处理,在shell程序的时候文本处理时比不可少的,可以节省很多的时间,今天正好有空,将一些以前用过的东西整理一下:  现在有两个文件 a.txt:   1111   2222   3333 b.txt   aaa  bbb  ccc   abc   anv  sss   ddd   fff  ggg   一、如果要处理成:   1111   aaa  bbb ccc   2222   abc   anv  sss   3333   ddd   fff  ggg 可采用两种方法:  1. 使用paste      paste a.txt b.txt  2.使用awk       cat a.txt | grep -v '^#' | while read line
   do
   aa=`echo $line | awk  '{print $1}'`
  cat  b.txt | grep -v '^#' | while read line
   do
    dd=`echo $line | awk  '{print $1 " "$2" "$3}'`
  echo  $aa$dd
  done   done 二、如果要处理成:     1111/aaa  bbb ccc   2222/abc   anv  sss   3333/ddd   fff  ggg
   可以用用: paste -d"/" a.txt b.txt
   或者:cat a b 1>c|awk 'BEGIN{for (i=1;i<=4;i++)printf "sed -n '\''%sp'\'' c \nsed -n '\''%sp'\'' c\n",i,i+4}'|sh|sed 'N;s/\n/\\/'    或者:       cat a.txt  | grep -v '^#' | while read line
do
  aa=`echo $line | awk  '{print $1}'`
  cat  b.txt | grep -v '^#' | while read line
     do
   dd=`echo $line | awk  '{print $1" " $2" "$3}'`
echo  $aa"/"$dd
done
done
  三、当然如果要把b文件变成三行合并成一行并且以/作为每行的分隔符就可以用:   即:    1111   aaa  bbb ccc\2222   abc   anv  sss\3333   ddd   fff  ggg
    可用:paste -d"/" -s b.txt
  四、如果一个文件有多行 有唯一关键字,想定位本关键字所在行,并且打印出以后的n(数字)行,可如下操作:如a.txt的一部分如下:   gg1gg1g   sssssss   hshshhs    hshsh1222s   ssnininin   shshsh99999 需要得到sssssss行以及该行以下的4行  dd=a.txt
TMP1=`awk '/sssssss/ {print NR}' $dd`
TMP2=`awk '/sssssss/ {print NR+4}' $dd`
sed -n ${TMP1},${TMP2}p $RUNTXT>abc.txt
  今天就写这些了,以后再整理加上来  
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载