【问题标题】:How to combine a echo/print command with another command such as cat or sed如何将 echo/print 命令与 cat 或 sed 等其他命令结合使用
【发布时间】:2017-03-14 17:51:02
【问题描述】:

我遇到过这样一种情况,例如在使用 cat 命令或 sed 命令时,我需要打印同一行的文本部分。

我有一个显示 5 行的文件

Tom

Seniorsupport

5

U

我的目标是在每行前面打印特定文本,使其另一列更具体

我想要的输出:

Grantee/Username:   Tom

Role name:          Seniorsupport

Priority:           5

Usertype:           U

有很多方法可以做到这一点,但我想要一种快速简便的方法

【问题讨论】:

    标签: linux unix aix


    【解决方案1】:

    我决定解决这个问题的一种方法是使用 awk 命令。

    cat filename | awk '{print "Grantee/Username:   " $1}' | sed -n '1p'
    

    上述命令将 cat 文件并使用 awk 函数打印文本,使用 sed 命令仅打印文件中的第 1 行

    【讨论】:

    • 要打印每行的特定文本,请将 sed 命令号修改为 2,例如打印第 2 行的文本 (sed -n '2p')
    • 请通过编辑问题来发布您的代码。
    【解决方案2】:

    您可以将标题(第 1 列)保留在 file1 中,将实际值保留在 file2 中,然后您可以使用 paste 命令将它们并排粘贴,如下所示:

    $ cat file1
    Grantee/Username
    Role name
    Priority
    Usertype
    $ cat file2
    Tom
    Seniorsupport
    5
    U
    $ paste <(awk '{printf "%-19s\n", $0 ":"}' file1) file2
    Grantee/Username:   Tom
    Role name:          Seniorsupport
    Priority:           5
    Usertype:           U
    

    【讨论】:

      【解决方案3】:

      将标题写入另一个文件(“keyfile”)。 使用 awk 组合数据和键。使用What is "NR==FNR" in awk? 中解释的技巧,您可以编写

      awk 'NR==FNR {a[FNR]=$0; next} {printf("%-20s%s\n", a[FNR] ":", $0) }' keyfile datafile
      

      【讨论】:

        猜你喜欢
        • 2023-03-30
        • 2022-06-10
        • 2013-06-05
        • 1970-01-01
        • 2021-06-23
        • 2011-12-01
        • 2014-08-22
        • 2021-07-22
        • 1970-01-01
        相关资源
        最近更新 更多