【问题标题】:Bash replace first 4 characters after tail -fBash 替换 tail -f 后的前 4 个字符
【发布时间】:2019-10-21 13:01:17
【问题描述】:

我有一个 .txt 格式的日志文件,我希望将前四个字符替换为 ****XXXX 以匿名数据。

我正在运行以下命令:

tail -f file.txt

我知道我可以通过以下方式剪切第一个字符:

tail -f file.txt | cut -c4-

但我想插入四个通配符。

我怎样才能做到这一点?

【问题讨论】:

    标签: bash wildcard cut tail


    【解决方案1】:
    echo 1234567890 | sed 's/..../****/'
    

    输出:

    ****567890

    【讨论】:

      【解决方案2】:

      要在前四个字符匿名的情况下连续尾随文件,可以使用以下命令:

      tail -f file.txt | sed 's/^..../****/'
      

      如果您有一个已写入的文件,并且您想一次性匿名化其中的所有数据,您可以按如下方式使用 sed:

      sed -i 's/^..../****/g' 58486880.txt
      

      请注意,第二个命令适用于 GNU/Linux sed,但不适用于 BSD/MacOS sed。

      【讨论】:

        【解决方案3】:

        由于问题和标题不匹配,要替换最后四个,您必须使用$

        tail -f tmp.txt | sed 's/.\{4\}$/****/'
        

        测试:

         while true; do cat <(seq 1 10 | tr -d '\n') <(echo) >> tmp.txt; sleep 1; done
        

        这会产生:

        1234567****
        1234567****
        1234567****
        1234567****
        1234567****
        1234567****
        1234567****
        1234567****
        1234567****
        1234567****
        1234567****
        1234567****
        1234567****
        1234567****
        1234567****
        

        【讨论】:

          猜你喜欢
          • 2018-03-22
          • 1970-01-01
          • 1970-01-01
          • 2017-08-02
          • 1970-01-01
          • 2018-11-15
          • 1970-01-01
          • 1970-01-01
          • 2022-10-14
          相关资源
          最近更新 更多