如何将 echo/print 命令与另一个命令(如 cat 或 sed)结合使用

How to combine a echo/print command with another command such as cat or sed

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

我有一个文件,其中显示了 5 行

Tom

Seniorsupport

5

U

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

我想要的输出:

Grantee/Username:   Tom

Role name:          Seniorsupport

Priority:           5

Usertype:           U

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

我决定采用的一种方法是使用 awk 命令。

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

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

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

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

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

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