我試圖打印從文件中的某些特定信息與特定的格式(該文件如下:id|lastName|firstName|gender|birthday|creationDate|locationIP|browserUsed
)的文件特定部分 我要打印出來只中的firstName整理和獨特。 我特別想要調用腳本的時候使用這些參數(姑且稱之爲script.sh):印在外殼
./script.sh --firstnames -f <file>
我到目前爲止的代碼如下:
--firstnames)
OlIFS=$IFS
content=$(cat "$3" | grep -v "#")
content=$(cat "$3" | tr -d " ") #cut -d " " -f6)
for i in $content
do
IFS="|"
first=($i)
echo ${first[2]}
IFS=$OlIFS
done | sort | uniq
;;
esac
例如以下文件:
#id|lastName|firstName|gender|birthday|creationDate|locationIP|browserUsed
933|Perera|Mahinda|male|1989-12-03|2010-03-17T13:32:10.447+0000|192.248.2.12|Firefox
1129|Lepland|Carmen|female|1984-02-18|2010-02-28T04:39:58:781+0000|81.25.252.111|Internet Explorer
應該具有的輸出:
Carmen
Mahinda
我注意到的一個問題是腳本也打印了評論。以上將打印:
Carmen
firstnames
Mahinda
即使我已經使用grep來擺脫以「#」開頭的行。 這只是代碼的一部分(這是我認爲是問題的地方)。它應該承認「 - firstnames」。由於文件中的某些字段之間會有空格,特別是最後一部分(瀏覽器部分)中的空格,所以我想只刪除該部分。 這是一個學校項目,根據這部分成績的課程,這都是錯誤的。儘管我可以告訴腳本(我測試過),但腳本仍然有效。我不知道這有什麼問題,所以我不知道該糾正什麼。請幫忙 !
你能告訴我們一個示例文件內容以及你需要的輸出結果嗎?通過它的外觀,你可以用一個簡單的'awk'作爲'awk'來完成BEGIN {FS = OFS =「|」}!獨特[$ 3] ++ inputFile'' – Inian
'grep -vE'^#'inputFile |切-d'|' -f3'應該足夠了,它看起來像你試圖以兩種不同的方式同時做到這一點(用IFS +外部工具處理grep/tr/cut的bash本地字符串處理) – Aaron
順便說一句來回答你的具體問題「爲什麼名字仍然出現在我的輸出中」,問題在於你的'grep -v'的結果被覆蓋在下一行,你再次從文件內容('cat「$ 3」')開始 - >你的grep(應該刪除註釋行)的效果被忽略 – Aaron