通过unix shell脚本为文件的所有行中的特定位置保留空间



我在一个文件中有一个学生列表,我想制作一个脚本,比如:

student.txt
Rambavbusukhde
Shobit
Maa

下面是我准备的脚本:

cat student.txt |awk '{print "create synonym classa."$1 " for classb."$1";"}'

输出:

create synonym classa.Rambavbusukhde for classb.Rambavbusukhde;
create synonym classa.Shobit for classb.Shobit;
create synonym classa.Maa for classb.Maa; 

但我想为单词"for"之前的所有学生名称保留30个字符的空间,这样输出看起来像:

create synonym classa.Rambavbusukhde for classb.Rambavbusukhde;
create synonym classa.Shobit         for classb.Shobit;
create synonym classa.Maa            for classb.Maa; 

注意:我无法显示名称和单词"for"之间的空格。所有"for"应仅在一行中查找

您可以使用awk的printf satement来提供格式化"

awk '{printf "create synonym classa.%-30s for classb.%s;n",$1,$1}' student.txt

只需将awk命令的输出传递给column -t命令,

$ awk '{print "create synonym classa."$1 " for classb."$1";"}' file | column -t
create  synonym  classa.Rambavbusukhde  for  classb.Rambavbusukhde;
create  synonym  classa.Shobit          for  classb.Shobit;
create  synonym  classa.Maa             for  classb.Maa;

最新更新