linux常用命令

一、压缩解压命令

  Linux最基本的就算是对文件的压缩和解压操作了吧,现简单整理下常用命令:

  1.tar命令(涉及后缀.tar  .tar.gz  .tgz)

    压缩单文件夹:tar czvf FileName.tar DirName

    压缩多文件夹:tar zcvf FileName.tar.gz DirName1 DirName2 DirName3 ...

    解压文件:tar zxvf FileName.tar

   2.gz命令(涉及后缀  .gz)

    压缩:gzip FileName

    解压1:gunzip FileName.gz

    解压2:gzip -d FileName.gz

  3.zip命令(涉及后缀 .zip)

    压缩:zip FileName.zip DirName

    解压:unzip FileName.zip

二、向文件行首或行尾加入固定字符

  1.向行首加入固定字符 :sed -i 's/(^)/字符/g'  file.txt

  2.行首固定长度(一个点的长度为1)的字符替换成固定字符: sed -i 's/(^.)/字符/g'  file.txt

  3.向行尾加入固定字符 :sed -i 's/($)/字符/g'  file.txt

  4.行尾固定长度(一个点的长度为1)的字符替换成固定字符: sed -i 's/(.$)/字符/g'  file.txt

  5.文本替换: sed -i 's/替换前字符/替换后字符/g'  file.txt

  6.linux下还有一种常用分隔符,在Windows中不可见,如^M,是用ctrl+V+M打出来,其他符号同理类推。

  7.删除文件第一行数据,特别适合文件特别大,不适合vim打开的操作。sed -i '1d' filename

三、文件拼接

  paste

四、文件切分

  split       文本内容切分 cut

五、文件合成

  将一个文件夹中的文件都写入一个文件中去:find -name "*.txt" -exec 'cat' {} ; > test.tmp

    将一个文件A中包含的文件B中的内容全部去除(B文件内容较少的情况):cat fileA | egrep -v "`cat fileB`" > c

六、排序

  sort

  1.按照文件制定的某一列排序,-t,需特别注意的是,制表符不能用 直接切分,需要利用如下的方式进行分隔:

    1.1 sort  -t $' ' -k1 -g -r test> test_sort

    1.2 sort -t'<ctrl>v<tab>' -k1 -g -r test> test_sort    注:<ctrl>v<tab>代表先同时按下Ctrl和v键,然后松开,按下tab键  

   2 .sort + uniq 可以统计文本中每行内容出现的次数(uniq -c),同时也可去重。

七、查看工具的安装路径

  which

  eg.which python即可查看Python的安装路径

八、后台操作

  screen ( 与nohup异曲同工 )

  1. detach窗口:ctrl+a+d

  2. 恢复:screen -r

  3. 杀死:ctrl+a+k(测试貌似没什么反应,exit即可)

九、for循环 

for i in {3..8..2}
  do
     #time=`date +'%Y%m%d' -d "$i day ago"`  #i天前的日期
     #cat 'data/'$time'_result' >> testFile
     echo $i
 done

#> file  #新建一个文件

  i 的取值范围{3..8..2}中,3表示开始的位置,8表示结束的位置,2为步长。    

  

   2.另一种表达方式

  

for i in {0..10..1}
  do
     #time=`date +'%Y%m%d' -d "$i day ago"`
     #cat 'data/'$time'_result' >> testFile
     echo "i:"$i
     #m=10
     p=$(expr 10 - $i)
     echo "p:"$p
     #for j in {0..${p}..1}
     for((j=0;j<=${p};j++))
       do
          echo "j:"$j
          k=$(expr 10 - $i - $j)
          echo $i"_"$j"_"$k
       done
 done

  

  

  

十、神器

  1.AWK

    1.1行切分,列之间以 "^A"分隔符进行切分,取第27列。(此命令中$0表示这行数据本身)

      cat test | awk -F "^A" '{print $27}' >> test.out

    1.2列选择,常见的就是训练集和测试集的划分啦。

      awk  '{if(NR%10==0){print $0}}' file > test

      awk  '{if(NR%10!=0){print $0}}' file > train

     1.3 计算平均

      awk '{sum+=$1} END {print "Average = ", sum/NR}'

     1.4 截取指定区间    

      awk 'BEGIN{FS="[= ]"}{for(i=1;i<=NF;i++)if($i=="{DSSM_ID")print $(i+1)}' > test

     1.5 保留小数点后指定位数

      awk  '{printf "%.2f ", $1}'  test 

  2.SED

  3.GREP

    3.1 egrep

      egrep 是筛选出满足条件的行,egrep -v就是剔除满足条件的行,|表示或,满足其中之一即可。

      3.2 统计一段文本中指定字符的个数

      grep -o 'haha' file | wc -l  

      附:awk -v RS='haha' 'END {print --NR}' file 也可以,亲测有效 

      -v 去设定一个变量的值,RS是记录的分隔符,默认的是新行( ),就是说awk按照一行一行读数据,但是现在RS为'haha'后,就按'haha'读数据了,NR为已读的记录数,n个记录是被n-1个分隔符分开的,所以就是--NR了

十一、查看剩余空间

  1.du 

   du -ah --max-depth=1     这个是我想要的结果  a表示显示目录下所有的文件和文件夹(不含子目录),h表示以人类能看懂的方式,max-depth表示目录的深度。

   

  du常用的选项:
  -h:以人类可读的方式显示
  -a:显示目录占用的磁盘空间大小,还要显示其下目录和文件占用磁盘空间的大小
  -s:显示目录占用的磁盘空间大小,不要显示其下子目录和文件占用的磁盘空间大小
  -c:显示几个目录或文件占用的磁盘空间大小,还要统计它们的总和
  --apparent-size:显示目录或文件自身的大小
  -l :统计硬链接占用磁盘空间的大小
  -L:统计符号链接所指向的文件占用的磁盘空间大小
 

  2. df

   df -hl 常用命令

    

【reference】

  1.http://blog.csdn.net/zhoubl668/article/details/44341447

原文地址:https://www.cnblogs.com/zidiancao/p/5567785.html