精华内容
下载资源
问答
  • linux shell取文本最后一行

    千次阅读 2018-12-22 10:41:31
    目前我知道的方法有四种 1.awk 'END {print}' 2.sed -n '$p' 3.sed '$!N;$!D' 4.awk '{b=a"\n"$0;a=$0}END{print b}'

    目前我知道的方法有四种

    1.awk 'END {print}'

    2.sed -n '$p'

    3.sed '$!N;$!D'

    4.awk '{b=a"\n"$0;a=$0}END{print b}'

    展开全文
  • 打印对账文件最后一行汇总信息,通过钉钉定时发送到运维群。顺便总结下 Linux 打印文本部分行内容的各种方法。 测试文本 # 生成测试文本内容 $ seq -f "%02g daodaotest" 1 10 > test.txt # 查看测试文本内容,...

    背景

    打印对账文件最后一行汇总信息,通过钉钉定时发送到运维群。顺便总结下 Linux 打印文本部分行内容的各种方法。

    测试文本

    # 生成测试文本内容
    $ seq -f "%02g daodaotest" 1 10 > test.txt
    
    # 查看测试文本内容,并显示行号
    $ cat -n test.txt
         1	01 daodaotest
         2	02 daodaotest
         3	03 daodaotest
         4	04 daodaotest
         5	05 daodaotest
         6	06 daodaotest
         7	07 daodaotest
         8	08 daodaotest
         9	09 daodaotest
        10	10 daodaotest
    
    $ awk '{print NR" "$0}' test.txt
    1 01 daodaotest
    2 02 daodaotest
    3 03 daodaotest
    4 04 daodaotest
    5 05 daodaotest
    6 06 daodaotest
    7 07 daodaotest
    8 08 daodaotest
    9 09 daodaotest
    10 10 daodaotest
    

    打印前 N 行内容

    # head 打印前 5 行内容
    $ head -5 test.txt
    $ head -n 5 test.txt
    
    # sed 打印前 5 行内容
    $ sed -n '1,5p' test.txt
    
    # awk 打印前 5 行内容
    $ awk 'NR<6' test.txt
    

    打印指定行内容

    # sed 打印第 5 行内容
    $ sed -n '5p' test.txt
    
    # awk 打印第 5 行内容
    $ awk 'NR==5' test.txt
    
    # tail 配合 head,打印指定行内容
    $ tail -n +5 test.txt | head -1
    

    打印指定范围行内容

    # sed 打印 5~10 行内容
    $ sed -n '5,10p' test.txt
    
    # awk 打印 5~10 行内容
    $ awk 'NR>4 && NR<11' test.txt
    
    # tail 配合 head,打印 5~10 行内容
    $ tail -n +5 test.txt | head -6
    

    打印跨行内容

    # sed 打印第 3 行 和 5~7 行内容
    $ sed -n '3p;5,7p' test.txt
    
    # awk 打印第 3 行 和 5~7 行内容
    $  awk 'NR==3 || (NR>4 && NR<8)' test.txt
    

    打印奇偶行内容

    # 打印奇数行内容
    ## NR 表示行号
    $ awk 'NR%2!=0' test.txt
    $ awk 'NR%2' test.txt
    
    ## i 为变量,未定义变量初始值为 0,对于字符运算,未定义变量初值为空字符串
    ## 读取第 1 行记录,进行模式匹配:i=!0(!表示取反)。! 右边是个布尔值,0 为假,非 0 为真,!0 就是真,因此 i=1,条件为真打印第一条记录。
    ## 读取第 2 行记录,进行模式匹配:i=!1(因为上次 i 的值由 0 变成了 1),条件为假不打印。
    ## 读取第 3 行记录,因为上次条件为假,i 恢复初值为 0,继续打印。以此类推...
    ## 上述运算并没有真正的判断记录,而是布尔值真假判断。
    $ awk 'i=!i' test.txt
    
    ## m~np:m 表示起始行;~2 表示:步长
    $ sed -n '1~2p' test.txt
    
    ## 先打印第 1 行,执行 n 命令读取当前行的下一行,放到模式空间,后面再没有打印模式空间行操作,所以只保存不打印,同等方式继续打印第 3 行。
    $ sed -n '1,$p;n' test.txt
    $ sed -n 'p;n' test.txt
    
    # 打印偶数行内容
    $ awk 'NR%2==0' test.txt
    $ awk '!(NR%2)' test.txt
    $ awk '!(i=!i)' test.txt
    $ sed -n 'n;p' test.txt
    $ sed -n '1~1p' test.txt
    $ sed -n '1,$n;p' test.txt
    

    打印最后 N 行内容

    # tail 打印后 5 行内容
    $ tail -5 test.txt
    $ tail -n 5 test.txt
    

    打印最后一行内容

    # tail 打印最后一行内容
    $ tail -n 1 test.txt
    
    # sed 打印最后一行内容
    $ sed -n '$p' test.txt
    
    # awk 打印最后一行内容
    $ awk 'END {print}' test.txt
    

    打印匹配行内容

    # 打印以 "1" 开头的行内容
    $ sed -n '/^1/p' test.txt
    $ grep "^1" test.txt
    
    # 打印不以 "1" 开头的行内容
    $ sed -n '/1/!p' test.txt
    $ grep -v "^1" test.txt
    
    # 从匹配 "03" 行到第 5 行内容
    $ sed -n '/03/,5p' test.txt
    
    # 打印匹配 "03" 行 到匹配 "05" 行内容
    $ sed -n '/03/,/05/p' test.txt
    

    微信公众号:daodaotest

    展开全文
  • linux 中 ls 或cat 查询获取最后一行数据的方法: 1.awk ‘END {print}’ 2.sed -n ‘p′3.sed′p' 3.sed 'p′3.sed′!N;$!D’ 4.awk ‘{b=a"\n"$0;a=$0}END{print b}’ 案例: ls / | awk 'END {print}' cat a.txt ...

    linux 中 ls 或cat 查询获取最后一行数据的方法:

    1.awk 'END {print}'
    
    2.sed -n '$p'
    
    3.sed '$!N;$!D'
    
    4.awk '{b=a"\n"$0;a=$0}END{print b}'
    

    案例:

    ls / | awk 'END {print}'
    cat a.txt | awk 'END {print}'
    
    展开全文
  • 1,假设有文本数据txt内容如下:  1 2 3  4 5 6  7 8 9  问题1: 现要在 最后一行最后一个数字 9 后面添加一个字符 ’]' ,得到如下内容  1 2 3  4 5 6  7 8 9]

    1,假设有文本数据txt内容如下:

              1 2 3

              4 5 6

              7 8 9

         问题1: 现要在 最后一行最后一个数字 9 后面添加一个字符 ’]' ,得到如下内容

                      1 2 3

                      4 5 6

                      7 8 9]

          命令一:awk 'NR>1{print a}{a=$0}END{print gensub(/$/,"]",$0)}' txt

          命令二:awk 'BEGIN{getline a}{print a;a=$0}END{$0=gensub(/$/,"]",1,$0);print} ' txt

          命令三:awk '{if(!getline line){print gensub(/$/,"]",1,$0)}else{print line?$0 RS line:$0}}' txt


         问题2:现要在最后一行最后一个数字 9 后面添加一个字符 ’ ]' ,得到如下内容

                      1 2 3

                      4 5 6

                      7 8 9 ]

          命令一:awk 'NR>1{print a}{a=$0}END{print gensub(/$/," ]",$0)}' txt     

          命令二:awk 'BEGIN{getline a}{print a;a=$0}END{$0=gensub(/$/," ]",1,$0);print} ' txt

          命令三:awk '{if(!getline line){print gensub(/$/," ]",1,$0)}else{print line?$0 RS line:$0}}' txt

           (和问题1的命令相比," ]"多加了个空格)


         问题3:现要将最后一行最后一个数字 9 替换成字符 ’]' ,得到如下内容

                      1 2 3

                      4 5 6

                      7 8 ]

           命令一:awk 'NR>1{print a}{a=$0}END{print gensub(/.$/,"]",$0)}' txt  

           命令二:awk 'BEGIN{getline a}{print a;a=$0}END{$0=gensub(/.$/,"]",1,$0);print}' txt

           命令三:awk '{if(!getline line){print gensub(/.$/,"]",1,$0)}else{print line?$0 RS line:$0}}' txt

           (和问题1的命令相比,/.$/ 多了个点)


          问题4:现要将最后一行最后一个数字 9 替换成字符 ’]' ,得到如下内容

                      1 2 3

                      4 5 6

                      7 8]

          命令一:awk 'NR>1{print a}{a=$0}END{print gensub(/..$/,"]",$0)}' txt

          命令二:awk 'BEGIN{getline a}{print a;a=$0}END{$0=gensub(/..$/,"]",1,$0);print}' txt

          命令三:awk '{if(!getline line){print gensub(/..$/,"]",1,$0)}else{print line?$0 RS line:$0}}' txt

           (和问题3的命令相比,/..$/ 又多了个点,可以看出多加一个点,就向前多移1位)




       

    展开全文
  • 一、Shell脚本:while read line无法读取最后一行的问题 今天利用shell脚本处理园区bucket信息时,发现在脚本中使用while read line循环逐行读取文件时总是无法处理到最后一行,脚本大致执行流程源码如下(红色部分...
  • 1、tail -n +/-数字 文件名 2、head -n 数字 文件名...显示第一行和20到40行' 5、sed -n 7p file_name : 显式第7行 6、cat file_name | awk 'NR==1 || NR==2 || NR==10' 显式第1、2、10行  统计行数的几种方法: ...
  • Linux_echo不打印最后的换符_-n_转义c   echo -n "string " echo "string \c" #string _ #string后面下划线的地方可以继续键入
  • linux read 少读末尾一行的问题

    千次阅读 2018-11-13 00:06:02
    看似没什么问题,但实际发现读入 a.txt 少读了最后一行。这是什么毛病呢?经过调试,发现文件末尾加换行,read 就能读进去。大概是因为 read 认为,没有换行符结束的行,是完整的。那么是不是加上换行就可以了...
  • 例如存在3个文件,tmp1,tmp2,tmp3 。 需要获取最后行含ERROR的,结果中同时显示文件名和该行内容。 tail -n 1 tmp? |grep 'ERROR' ##无法打印文件名 求各位大神指教。
  • Linux】tail显示日志最后几行

    千次阅读 2020-02-06 09:56:21
    # 加参数默认输出最后 With more than one FILE, precede each with a header giving the file name. # 也可针对多个文件输出 With no FILE, or when FILE is -, read standard input. Mandatory arguments ...
  • linux shell 显示文件最后几行

    千次阅读 2020-06-08 14:07:04
    说明:显示filename最后20Linux下tail命令的使用方法。 linux tail命令用途是依照要求将指定的文件的最后部分输出到标准设备,通常是终端,通俗讲来,就是把某个档案文件的最后几行显示到终端上,假设该档案有...
  • Linux -输出文本中的最后一列内容

    千次阅读 2016-12-26 14:57:43
    1,命令:awk '{print $NF}' filename 2,输出每一行的数据个数  命令:awk '{print NF} 'filename
  • sed命令 sed "... 第四行的前面加一行 sed "4a\ttt" file 第四行后面加一行 sed -e "s/aaa/bbb/g" -e "s/bbb/ccc/g" 多个命令拼接...
  • 1、打印文件的第一列(域) : awk '{print $1}' filename 2、打印文件的前两列(域) : awk '{print $1,$2}' filename 3、打印完第一列,然后打印第二列 : awk '{print $1 $2}' filename...5、打印文本第一行 :awk '
  • 一 :cat ~ 由第一行开始显示内容(cat --help)#cat ~- A: 可列出一些特殊字符,而不是空白而已;...-T二:tac ~从最后一行开始显示,可以看出tac是cat的倒写形式 tac --help三:nl ~ 显示的时候,顺便输出行号-b...
  • shell输出每一行最后几个字符

    千次阅读 2019-12-20 14:27:33
    输出每一行最后几个字符, 可以借助于awk,以及substr函数,awk没有分隔符时$0表示每一行 cat test.txt |awk '{print substr($0,length($0)-n)}' 其中的n表示字符长度,如果要输出每行最后10个字符,就把n改...
  • linux复制日志的最后2000出来

    千次阅读 2016-11-30 17:41:33
    先到达日志目录,然后执行下面命令: tail -2000 catalina.out >catalinna-log-hbp.txt
  • 最近的工作中需要在shell中用命令对一个文本的内容进行处理,前提是忽略文本的第一行,只处理其他行。思考之下发现tail、awk和sed这三个命令均可以实现这一功能,故在此做下记录。 使用tail命令 使用sed命令 使用...
  • linux之awk命令获取最后一

    万次阅读 2014-02-24 15:59:45
    统计分析中经常用的awk命令,其中用的最多的还是切分 cat test | awk -F',' '{print $1,$2} 能够很好的将记录按照需要切分开...但是如何获取最后一列呢? 可以使用awk -F',' '{print $NF}' 来获取,mark一下
  • 原因: 在bash中,所有在PS1中的非打印字符都必须用"\[\]"(包括引号)将其包围起来,否则在计算提示符长度时也会将其计算在内,导致其无法正确地换行,也就出现了回到行首的情况.
  • linux 下获取文件最后几行

    千次阅读 2018-09-03 10:19:00
    Linux下,获取文件倒数几行的命令是: tail -n 10 your_filename #获取倒数10 转载于:https://www.cnblogs.com/juan-F/p/9577161.html
  • 命令:相关显示命令有sed,tail,cat.awk,head等,可以常看Linux命令大全,man命令或者help命令查看相关用法。我们只介绍其中的部分。、sed命令#sed --help;查看具体使用规则:#sed -n 'xp' filename;显示文件X...
  • linux日志最后几行

    千次阅读 2019-01-03 23:06:56
    tail -n number filename
  • 获取最后一列: awk -F',' '{print $NF}' 获取倒数第二列: awk '{print $(NF-1)}' 关于awk 内置变量详细参考:《linux 文本处理 awk 几个特殊的内置变量》...
  • 如果有个abc.txt文件,内容是: aaa bbb BATBUSINESSTYPE, INSIDEID--) ONLINE; INSIDEID--) ONLINE ccc ddd eee fff 如果要删除ddd,那么脚本可以这样写: sed -i '/ddd/d' abc.txt 如果删除的是个变量的...
  • cat ../logs/catalina.out | grep -A1000 foo 文件catalina.out 中查找包含foo的后1000 B是前n,A是后n A for after B for before 例:查看字符 maxAge在文件中前5和后5...在文件的最后两千中查看字符18...
  • linux 删除文件最后几行

    万次阅读 2019-06-04 18:07:24
    1. [root@server ~]# cat aa.txt aaaa bbbb cccc ...[root@server ~]# A=$(sed...命令操作的是原文件,结果到处到新产生的文件或打印到屏幕; 命令二是直接操作原文件,结果原文件发生了改变,产生了命令结果。
  • Linux中,查看日志后1000

    万次阅读 2020-03-28 11:49:41
    Linux中,查看日志后1000,命令为: tail -f -n 1000 catalina.out
  • linux 如何显示个文件的某几行(中间几行) 【】从第3000开始,显示1000。即显示3000~3999 cat filename | tail -n +3000 | head -n 1000 【二】显示1000到3000 cat filename| head -n 3000 | tail -n...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 135,647
精华内容 54,258
关键字:

linux不打印最后一行

linux 订阅