안녕하세요 여러분, 저는 이 빌어먹을 사전 시험 연습 때문에 정말 막혔습니다.
연습: 파일 이름(첫 번째 인수)을 취하고 파일에 있는 숫자와 문자의 수를 계산하는 scrypt를 작성하세요. Scrypt는 또한 이 모든 숫자를 합산해야 합니다.
1 2 3 4 5
9 2 3 1 2 a l a i o l a
9 2 ala ma kota 102
다음과 같아야 합니다.
File ....... have 15 numbers and 16 letters.
Sum of all of those numbers is 145.
내 생각은 이 연습에 어떻게 접근해야 하는가입니다(단계별).
- 파일 이름 캡처(인수로)
- 전체 데이터를 하나의 행으로 구문 분석합니다(더 쉬운 정렬을 위해).
- 전체 데이터를 숫자로 정렬합니다(이와 같은 결과를 얻음 1 2 3 4 5 6 (...) 102 aaaaaaikm (...)
- 합산 및 계산을 용이하게 하기 위해 첫 번째 숫자를 매개변수($1-$13)로 설정 + 계산을 용이하게 하기 위해 문자를 매개변수로 설정
- 모든 것을 콘솔에 표시
내 인생을 즐기고 Overwatch를 플레이합니다(농담입니다. Linux 학습 {시험 전의 귀여운 것들}으로 돌아가서)
나는 붙어있다.
2단계. 이 데이터를 분석한 후 다음과 같은 결과를 얻었습니다(찾을 수 있는 거의 모든 것을 시도했습니다).
1 2 3 4 5 9 2 3 1 2 a l a i o l a 9 2 ala ma kota 102
실제로 이 3개 행을 1개로 병합하는 방법을 모르겠습니다. 2개 정렬을 시도할 때마다 처음으로 돌아갑니다.
echo `cat kolos3 | xargs | sort -n `
이 운동을 도와줄 수 있는 사람이 있다면 좋을 것 같습니다.
답변1
grep -o
입력을 동일한 라인에 연결하는지 여부에 관계없이 대부분의 작업이 여기에서 수행됩니다.
-o, --match만 해당
일치하는 줄의 일치하는(비어 있지 않은) 부분만 인쇄하며, 각 부분은 별도의 출력 줄에 표시됩니다.
글자 수를 세어보세요.
grep -o "[[:alpha:]]" "$file" | wc -l
계산하다숫자:
grep -o "[[:digit:]]" "$file" | wc -l
하지만 당신이 원한다면숫자:
grep -o "[[:digit:]]\+" "$file" | wc -l
숫자를 합산하려면 다음 솔루션 중 하나를 사용할 수 있습니다.여러 명령줄 인수를 합산하는 bash 스크립트를 만드는 방법은 무엇입니까?
이 질문을 다음 사람에게 전달하겠습니다 bc
.
(grep -o "[[:digit:]]\+" "$file" | tr '\n' + ;echo 0)|bc