V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Tonni
V2EX  ›  问与答

Linux Pipe 与 Redirection 的问题

  •  
  •   Tonni · 2016-05-07 14:59:04 +08:00 · 1144 次点击
    这是一个创建于 3124 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在 Stackouverflow 上看到了一个在命令行下格式化 JSON 文件的方法,按照得票数最高的答案试验了下将 JSON 格式化然后使用重定向写入到原来的文件:

    $ python -m json.tool /etc/user-list.json > /etc/user-list.json
    

    但是却一直报错,报错信息如下:

    No JSON object could be decoded
    

    这时再检查 /etc/user-list.json 会发现这个文件已经被清空了,我怀疑是因为 Linux 当中 Pipe 和 Redirection 有不同的优先级,不知道怎么解决这个问题,还请对 Linux Command Line 熟悉的帮忙看下,谢谢。

    3 条回复    2016-05-07 22:35:24 +08:00
    lhbc
        1
    lhbc  
       2016-05-07 15:18:03 +08:00
    Linux 是按行处理的

    jsoncontent=$(cat /etc/user-list.json)
    echo -e "$jsoncontent" | python -m json.tool > /etc/user-list.json
    Tonni
        2
    Tonni  
    OP
       2016-05-07 20:46:18 +08:00
    @lhbc 非常感谢,已解决。
    julyclyde
        3
    julyclyde  
       2016-05-07 22:35:24 +08:00
    不是按行的问题吧
    是重定向先发生,然后读取后发生,导致读不到内容
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5937 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 01:52 · PVG 09:52 · LAX 17:52 · JFK 20:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.