如何将echo / print命令与cat或sed等其他命令结合使用

时间:2016-11-01 14:55:40

标签: linux unix aix

我遇到过一个场景,我需要在使用cat命令或sed命令时打印同一行的文本部分。

我有一个显示5行的文件

Tom

Seniorsupport

5

U

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

输出我想要:

Grantee/Username:   Tom

Role name:          Seniorsupport

Priority:           5

Usertype:           U

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

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

您可以将标题(第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

答案 2 :(得分:0)

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

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