V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Counter
V2EX  ›  Linux

awk '{printf $0"\t"}' | awk '{print $0}' 输出会自动换行?

  •  
  •   Counter · 2016-01-09 15:41:18 +08:00 · 16816 次点击
    这是一个创建于 3271 天前的主题,其中的信息可能已经有所发展或是发生改变。
    假设原本 sh test.sh 输出为:
    aaaaabbbbb
    cccccddddd <---输出两行结束

    执行下面语句 1:
    sh test.sh | awk '{printf $0"\t"}'
    输出为:(为了清楚,这里用____表示\t)
    aaaaabbbbb____cccccddddd____username@host: <---注意这里没换行

    执行下面语句 2:
    sh test.sh | awk '{printf $0"\t"}' | awk '{print $0}'
    输出为:(为了清楚,这里用____表示\t)
    aaaaabbbbb____cccccddddd____ <---注意这里换行了
    username@host:

    请问为什么会这样呢?
    jalena
        1
    jalena  
       2016-01-09 16:56:07 +08:00
    \n
    ynyounuo
        2
    ynyounuo  
       2016-01-09 16:57:16 +08:00   ❤️ 1
    amghost
        3
    amghost  
       2016-01-09 17:12:49 +08:00   ❤️ 1
    一个是 printf ,一个是 print
    printf 不带换行, print 默认会输出换行
    Delbert
        4
    Delbert  
       2016-01-09 17:15:14 +08:00   ❤️ 1
    搜索一下不就有了吗?
    一个 printf 一个 print
    http://bbs.chinaunix.net/thread-1437213-1-1.html
    shell 的 print??
    你是指 awk 的 print 和 printf 吧
    print 输出指定内容后换行, printf 只输出指定内容后不换行
    Counter
        5
    Counter  
    OP
       2016-01-09 17:35:11 +08:00
    @Delbert
    @amghost
    原来是我漏看了,还研究了半天
    KentY
        6
    KentY  
       2016-01-09 23:56:12 +08:00   ❤️ 2
    @ynyounuo 怎么 @我了?

    print 并不是输出内容并换行, 只是缺省换行.
    在 awk 里, print 和 printf 的区别是, print 输出当前记录(行 record), 并在最后自动加上 ORS ( 默认是\n ,但可以是任何字符串). 而 printf 是按给定格式输出内容, 你给它 ORS 参数, 它就输出 ORS, 没给就不输出.

    有一点要注意的, 类似 printf $0 这种应该在实际代码中避免. 要写 printf "%s", $0 看起来繁琐, 但是一旦$0 里包含%, 代码就容易出错.如果使用了 printf, 就要用格式和参数形式.

    my 2 cents
    KentY
        7
    KentY  
       2016-01-09 23:57:56 +08:00
    上面内容 :

    "但是" 一旦$0 里包含%,

    里的"但是"是多余的, 应该删掉. sorry.
    ynyounuo
        8
    ynyounuo  
       2016-01-10 05:30:18 +08:00
    @KentY 看到 awk 的自然反应
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2564 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:41 · PVG 23:41 · LAX 07:41 · JFK 10:41
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.