
저는 수년 동안 Windows 소프트웨어를 개발해 왔습니다. 저는 밖으로 나가서 Linux를 배우려고 노력하고 있습니다. 그것은 나의 새로운 직업에 정말로 도움이 될 것입니다.
나는 "Awk and Sed" 2판이라는 책을 골랐습니다. 저는 Ubuntu 13.04를 실행하고 있습니다. 터미널 창 작업. 나는 책을 통해 작업하고 있는데 작업할 수 없는 예를 만났습니다.
나는 이것이 작동하도록 하기 위해 내가 찾을 수 있는 모든 것을 시도해 왔습니다. 두 번째 스크립트 파일을 사용하지 않고 예제를 입력하면 예상대로 작동합니다. 그러나 책에 설명된 대로(즉, 스크립트 파일을 사용하여) 작업하려고 하면 "byState: 명령을 찾을 수 없습니다."라는 메시지가 나타납니다. 실패한 명령은 다음과 같습니다.
sed -f nameState list | byState
내 문제는 무엇입니까?
다음은 데이터 세트입니다. 목록 =
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 ,