我目前正在研究Unix OS I的顶点项目。我非常接近完成,但我仍然坚持这一部分:基本上,我的任务是创建一个基于菜单的应用程序,用户可以进入我使用该数据,使用它创建用户名,然后将其从小写翻译为大写,最后将数据存储为: firstname:lastname:username 。
当要求显示数据时,我必须根据用户名而不是名字显示数据,并使用空格而不是制表符进行格式化。例如,它应如下所示:用户名firstname lastname 。所以,我尝试了多个命令,比如sort和awk,但我似乎只能将文件中的字段作为一个大字段来访问;例如,当我awk '{print NF}' users.txt
找到每行的字段数时,它将返回1,清楚地表明我的数据仅作为一个字段输入,而不是我需要的3个字段。所以我的问题是:如何更改文本文件中的字段数?这是我的代码,用于将firstname:lastname:username添加到文件users.txt:
userInfo=~/capstoneProject/users.txt
#make sure strings is not empty before writing to disk
if [[ "$fname" != "" && "$lname" != "" ]]
then #write to userInfo (users.txt)
echo "$fname:$lname:$uname" | tr a-z A-Z >> $userInfo
#change to uppercase using |
fi
是否因为我将数据输入我的文件的方式?使用echo "$fname:$lname:$uname"
?因为这是我的教科书向我展示如何做到这一点的方式,以后他们在使用特定字段的排序功能时没有遇到麻烦,正如我现在所做的那样。如果需要更多细节,请告诉我;在今晚提交我的项目之前,这是我需要的最后一件事。
答案 0 :(得分:0)
您的输入文件包含:
个分隔的字段,因此您需要告诉awk:
awk -F':' '{print NF}' users.txt