awk命令文件:如何完成此任务

时间:2016-03-17 00:45:08

标签: linux bash awk

在awk中有toupper()来大写文字,gsub()来替换文字

我已经看到了如何在文件上执行每个任务的示例,但它们可以工作,但是我很好奇如何制作一个命令文件,当使用" who"将完成以下任务:

而不是"谁"输出如下:

firstname.lastname pts/# .....[other information]

它将输出如下:

Firstname, Lastname TTY #     [other information removed]

如何在awk命令文件中完成此任务?

2 个答案:

答案 0 :(得分:2)

awk救援!

对于您可以执行此操作的任何字段

awk '{print toupper(substr($1,1,1)) tolower(substr($1,2,length($1)-1))'

我不熟悉格式化的firstname.lastname(我看到的是userid)。

答案 1 :(得分:2)

必须有一个更清洁的方式,但这是我的尝试。

echo "firstname.lastname pts/# .....[other information]" |
awk  'r=gensub(/([[:alnum:]]*)\.([[:alnum:]]*).*/, "\\1 \\2", "",$1),
split(r,a," ")
{ print toupper(substr(a[1],1,1)) substr(a[1], 2) " " toupper(substr(a[2],1,1)) substr(a[2], 2) " TTY#" }'