在awk中有toupper()
来大写文字,gsub()
来替换文字
我已经看到了如何在文件上执行每个任务的示例,但它们可以工作,但是我很好奇如何制作一个命令文件,当使用" who"将完成以下任务:
而不是"谁"输出如下:
firstname.lastname pts/# .....[other information]
它将输出如下:
Firstname, Lastname TTY # [other information removed]
如何在awk命令文件中完成此任务?
答案 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#" }'