代码之家  ›  专栏  ›  技术社区  ›  g00dds

如何在bash中从文件中的每一行解码base64?

  •  0
  • g00dds  · 技术社区  · 2 年前

    我有一个包含多行base64编码文本的文件。我通常使用 base64 -d 命令来解码单个base64字符串,但我可以将此命令应用于文件中的每一行吗?当然,我可以为此编写一个简单的python脚本,但我正在寻找只使用bash的更优雅、更快的方法。 文件内容示例:

    TEdVVURQT1NNS0FEQVZVWlZYTkQ=
    V1dOUERXR0ZGT1VEUkdWTUFTQ1o=
    U1NKV0pNSkVBSEtVU0hESEVWTkw=
    Q0ZVTllUU05HUE9NR1dEV0lXSVY=
    U1RZWVZOVE5ESUFVSUNBU1NNRU4=
    SkhFQkJTQUhIWkxWSVBXS0VDSUI=
    SE5GUFNVWU5YRVZVVktCWUZNS1E=
    SUtZTlRCWFRKS0FFSEtNWlNWS0Q=
    TVBSWlVKQU5BRlNDVE9JVkVDQ1A=
    Q0hIT1ZOVVhQSFBGTlVUSERUQlQ=
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   Andrew Stubbs    2 年前

    base64 -d 将在我的系统上实现您想要的功能:

    $ echo one | base64  > file.txt
    $ echo two | base64  >> file.txt
    $ echo three | base64  >> file.txt
    
    $ cat file.txt 
    b25lCg==
    dHdvCg==
    dGhyZWUK
    
    $ cat file.txt | base64 -d
    one
    two
    three
    $
    

    或者,使用 highest voted bash for-line-in-file pattern :

    $ cat file.txt | while read line ; do
        echo "$line" | base64 -d ; 
    done
    

    将导致相同的结果:

    one
    two
    three