zoukankan      html  css  js  c++  java
  • linux下pid命令

    ps aux | grep tomcat|  awk '{if(NR==1)print $2}'

    Linux:批量修改分隔符(awk、BEGIN、FS、OFS、print、tr命令)

    批量修改文件的分隔符,可以用FS和OFS命令

    FS:Field Separator,字段分隔符

    OFS:Out of Field Separator,输出字段分隔符

    1. 修改空格为分隔符

    假设有这么一个文件file1.txt,其内容如下:

    可以看出,file1的分隔符很长,不止一个空格符组成,因此我们需要先将分隔符统一一下,输入一下命令:

    1
    awk -F " " '{if($1~/^16/) print $1,$2,$3,$4}' file1.txt > file2.txt

      生成file2.txt,如下图片:

    2. 修改分隔符为逗号

    分隔符统一为一个空格,接下来将分隔符统一修改为逗号“,”,输入一下命令:

    1
    awk 'BEGIN{ FS=" ";OFS="," }{ print $1,$2,$3,$4 }' file2.txt > file3.txt

      生成的文件file3.txt如下:

    如果想将分隔符修改为冒号,只需要将OFS=","修改为OFS=":"

     3.修改制表符为逗号

    sampleID.txt文件如下:

    005 018 105 100

    首先判断文件是制表符还是空格:

    1
    sed -n l sampleID.txt ###判断文件时制表符还是空格分割的;

      如果是空格分割的,显示结果为:

    005 018 105 100

    如果是制表符分割,显示结果为:

    005 018 105 100

    将制表符修改为逗号分隔符:

    1
    cat sampleID.txt|tr  " " "," > sampleID_form.txt  

    生成的sampleID_form.txt的内容如下:

    005,018,105,100

    使用awk命令获取文本的某一行,某一列

    1、打印文件的第一列(域)                 : awk '{print $1}' filename
    2、打印文件的前两列(域)                 : awk '{print $1,$2}' filename
    3、打印完第一列,然后打印第二列  : awk '{print $1 $2}' filename
    4、打印文本文件的总行数                : awk 'END{print NR}' filename
    5、打印文本第一行                          :awk 'NR==1{print}' filename
    6、打印文本第二行第一列                :sed -n "2, 1p" filename | awk 'print $1'

    #(获取test文件的第4行)

    #cat test| awk 'NR==4'或cat test|sed -n '4p'直接获取某一行的数据



        shell里面的赋值方法有两种,格式为
        1) arg=`(命令)`
        2) arg=$(命令)
    因此,如果想要把某一文件的总行数赋值给变量nlines,可以表达为:
        1) nlines=`(awk 'END{print NR}' filename)`
    或者

        2) nlines=$(awk 'END{print NR}' filename)

     

    awk练习题
       wang     4
       cui      3
       zhao     4
       liu      3
       liu      3
       chang    5
       li       2
       1 通过第一个域找出字符长度为4的
       2 当第二列值大于3时,创建空白文件,文件名为当前行第一个域$1 (touch $1)
       3 将文档中 liu 字符串替换为 hong
       4 求第二列的和
       5 求第二列的平均值
       6 求第二列中的最大值
       7 将第一列过滤重复后,列出每一项,每一项的出现次数,每一项的大小总和
       1、字符串长度
        awk 'length($1)=="4"{print $1}'
       2、执行系统命令
        awk '{if($2>3){system ("touch "$1)}}'
       3、gsub(/r/,"s",域) 在指定域(默认$0)中用s替代r  (sed 's///g')
        awk '{gsub(/liu/,"hong",$1);print $0}' a.txt
       4、列求和
        df -h | awk '{a+=$2}END{print a}'
       5、列求平均值
        df -h | awk '{a+=$2}END{print a/NR}'
        df -h | awk '{a+=$2;b++}END{print a,a/b}' 
       6、列求最大值
        df -h | awk 'BEGIN{a=0}{if($2>a) a=$2 }END{print a}'
       7、将第一列过滤重复列出每一项,每一项的出现次数,每一项的大小总和
        awk '{a[$1]++;b[$1]+=$2}END{for(i in a){print i,a[i],b[i]}}'
  • 相关阅读:
    排序——插入排序
    利用socket传文件
    Segmentation fault (core dumped)
    Linux网络编程
    3G功能设计及实现
    rpm命令
    安装包相互依赖的问题
    centos网站(一些软件的下载)
    解决vim显示中文的问题
    glGetFloatv (GL_MODELVIEW_MATRIX, mat)
  • 原文地址:https://www.cnblogs.com/But-you/p/10588233.html
Copyright © 2011-2022 走看看