• Linux shell 学习笔记(三)


    今天学习遇到一个新问题,描述如下:

    我通过UE编辑器,FTP方式连上了后台Linux主机,然后右键->新建了一个文件“input.txt”,文件内容如下:

    zero
    file,12,one
    disk,2,two
    kind,300,tree
    
    Dog,4
    

    然后执行了如下命令:

    cat ./input.txt | awk -F ',' '{print $1,$0}'

      执行结果如下:

     zero
    file file,12,one
    disk disk,2,two
    kind kind,300,tree
     
    Dog Dog,4

    很奇怪,为什么第一行打印成了这个结果?

    然后咨询导师,导师一眼就发现问题所在:

    由于我是通过UE新建的文件,文件格式默认为dos格式,对于dos格式的文件,默认行尾是以“ ”结尾的。可以通过以下脚本查看下第一行的输出结果:

    head -1 ./input.txt | awk -F ',' '{print $1,$0}' | od -c

    (od命令:格式化输出文件中的数据,输出ASCII码字符或者是转义字符)

    查询结果如下:

    $head -1 ./input.txt | awk -F ',' '{print $1,$0}' | od -c
    + awk -F , '{print $1,$0}'
    + od -c
    + head -1 ./input.txt
    0000000   z   e   r   o  
           z   e   r   o  
      
    
    0000014

    可以看出,$1取值是以 结尾,$0是以 结尾的。

    代表回车,即回到行首的意思,输出$1之后,光标回到行首,然后后面的空格会把字母"z"替换掉,然后是后面的“zero”,然后又回到行首,最后 换行。

    这样一来,为什么会出现第一行的结果也就非常清楚了!

    总结:以后建立文件,尽量直接在主机上进行。。。

  • 相关阅读:
    心慌慌
    辛苦了
    [转]家庭长寿秘方:夫妻关系之守则。
    无题
    浮躁
    [转]樱木花道9大缺点
    一票难求
    Excel录入数据,自动记录当前时间点
    Excel数据透视表基本使用
    linux下tomcat7虚拟目录配置
  • 原文地址:https://www.cnblogs.com/lzp666/p/6531878.html
Copyright © 2020-2023  润新知