[英]Awk can only print the whole line; cannot access the specific fields
我目前正在從事Unix OS I的頂峰項目。我非常接近完成,但是我堅持這一部分:基本上,我的任務是創建一個基於菜單的應用程序,用戶可以在其中輸入第一個姓,我使用該數據,使用它創建一個用戶名,然后將其從小寫轉換為大寫,最后將數據存儲為: firstname:lastname:username 。
當要求顯示數據時,我必須根據用戶名而不是名字顯示數據,並用空格而不是制表符格式化。 例如,它應類似於: 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"
嗎? 因為這是我的教科書向我展示如何做到的方式,並且以后在對特定字段使用sort函數時,他們也沒有遇到任何麻煩,就像我現在正在嘗試的那樣。 如果需要更多詳細信息,請告訴我; 這是我今晚提交項目之前需要做的最后一件事。
您的輸入文件具有:
分隔的字段,因此您需要告訴awk:
awk -F':' '{print NF}' users.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.