LINUX 实用命令及demo

浏览: 1541

1)当我需要将当前目录的文件解压到指定目录data_bi下面并重命名为t_org.txt 

gunzip -c t_org.txt.gz >  /data_bi/t_org.txt  

如果解压到当前文件夹的话gunzip解压后的文件会将压缩包替换掉,所以为了保留压缩包将文件解压到另一个folder中

2). 当将txt文件通过etl工具导入数据库的时候吧,某一行数据报错,想查看具体某行数据情况,

查看一个文件的某几行内容:   sed -n '1206264,1206266p'  t_app1.txt;

-n后面的2个数字是具体的行号

3).  grep  -n   "xxx"  str.txt  查看某个指定内容在文件的哪一行

4).建议在管道符“|”和两侧的命令之间使用空格,增加代码的可读性

5)touch命令可以用来创建文件,,变更,更改文件时间。

touch  -c  a.txt  -c选项可以避免创建一个新的文件,并用当前时间更新文件的时间戳。

-m改变文件的修改时间访问时间不变。

6).mkdir  -p 命令可以自动创建所有还不存在的父目录

  创建文件的时候并授权: mkdir  -p  -m 777  backup/old(创建一个任何人都有读写权限的目录)  


7)项目中使用shell场景,使用oracle  sqlloader向oracle数据库导入数据,读取linux服务器指定目录的txt文件,文件需要解压,基于以上需求的shell脚本

##############################读取ctl文件列表获取ctl名,txt文件列表获取txt文件名,替换ctl文件第二行###################

部分脚本:

Template_DATA_Path="/ora01/$date1"

Source_File_Path="/ora01/$date1"  ##数据文件所在路径

File_Control_Path="/ora01/ctl_template" ##控制文件所在路径

cd  $File_Control_Path       ##切换目录

ctl_count=`find *.ctl |wc -l`; ###查找$File_Control_Path目录下ctl文件的个数

source_file_count=`ls  $Source_File_Path/*.txt |wc -l`;  ###查找$Source_File_Path下txt文件个数

if [ $ctl_count -ge  1 ] ;then    ##判断ctl文件个数是否大于1

    if [ $source_file_count -ge  1 ]; then   ###判断txt文件个数是否大于1

      for  ctl_file in $(ls -l $File_Control_Path | find *.ctl );  ###

     do

    ##echo $ctl_file ;

          for source_file in `ls -l $Source_File_Path |awk '{print $9}' |sed -e '/^$%/d'`;

 do

    if [ `cat $ctl_file | sed -n 2p | grep $source_file |wc -l`  -eq  1 ]; then --txt文件名在对应的ctl文件第二行出现

      echo $source_file "-----"$ctl_file ;

    fi

  ## echo `$source_file |awk -F ".txt" '{print $1}'`;

 ##待测试  sed -i '2s/$line/$newname/g' $Source_File_Path/$line

 done

     done

elif  [ $(ls $Source_File_Path|find *.txt.gz |wc -l) -ge 1 ] ; then  ##tested

 

for  line  in `ls -l $(Source_File_Path)|find *.txt.gz`;

        do 

          gunzip -f  $Source_File_Path/$line ;  ##强制解压即二次解压时直接覆盖第一次解压后的文件

        done

else

   exit 1;

   fi

fi;

以上demo如有任何问题请指正

推荐 1
本文由 xiaoyaya 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册