我遇到过一个场景,我需要在使用cat命令或sed命令时打印同一行的文本部分。
我有一个显示5行的文件
Tom
Seniorsupport
5
U
我的目标是在每行前面打印特定文本,使另一列更具体
输出我想要:
Grantee/Username: Tom
Role name: Seniorsupport
Priority: 5
Usertype: U
有很多方法可以做到这一点,但我想要一种快速简便的方法
答案 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