簡體   English   中英

Awk只能打印整行; 無法訪問特定字段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM