
我多年來一直致力於開發 Windows 軟體。我正在嘗試拓展並學習Linux。這對我的新工作確實有幫助。
我拿起了《Awk 和 Sed》第二版這本書。我運行的是 Ubuntu 13.04;使用終端機視窗。我正在閱讀這本書,並遇到了一個我無法開始工作的例子。
我一直在嘗試所有我能找到的方法來讓它發揮作用。如果我在不使用第二個腳本文件的情況下鍵入範例,它將按預期工作。然而,當我嘗試按照書中的說明工作(即使用腳本文件)時,我得到以下資訊:「byState:找不到命令」。失敗的命令是:
sed -f nameState list | byState
我的問題是什麼?
這是一組數據:List =
John Daggett, 341 King Road, Plymouth MA
Alice Ford, 22 East Broadway, Richmond VA
Orville Thomas, 11345 Oak Bridge Road, Tulsa OK
Terry Kalkas, 402 Lans Road, Beaver Falls PA
Eric Adams, 20 Post Road, Sudbury MA
Hubert Sims, 328A Brook Road, Roanoke VA
Amy Wilde, 334 Bayshore Pkwy, Mountain View CA
Sal Carpenter, 73 6th Street, Boston MA
第一個腳本是:nameState =
s/ CA/, California/
s/ MA/, Massachusetts/
s/ OK/, Oklahoma/
s/ PA/, Pennsylvania/
s/ VA/, Virginia/
第二個腳本是:byState =
#! /bin/sh
awk -F, '{
print $4 ", " $0
}' $* |
sort |
awk -F, '
$1 == LastState {
print "\t" $2
}
$1 != LastState {
LastState = $1
print $1
print "\t" $2
}'
答案1
您的腳本byState
可能無法執行。
嘗試:
chmod +x byState
....使腳本可執行,然後再次嘗試命令列。
另外,或者,由於 Unix 預設不將當前目錄包含在路徑中,因此您可能需要編寫:
sed -f nameState list | ./byState
... 代替
sed -f nameState list | byState
答案2
你可以嘗試這個:
sed -f namestate list | sort -k 4 -t ,