bash를 사용하여 html 파일에서 일부 값을 구문 분석하려고 합니다. 그래서 다음과 같은 숫자가 포함된 큰 텍스트 파일이 있습니다.
3
2
4
2
내가 원하는 것은 두 행을 취하고 두 숫자를 곱한 다음 변수에 값을 저장하고 합계에 추가하는 것입니다. 이 경우에는 3*2=6
및 가 됩니다 4*2=8
. 그럼 .X=0, X=X+6, X=X+8
X=14
답변1
노력하다
xargs -n2 < file | while read x y; do ((X+=x*y)); echo $X; done
xargs -n2
: 숫자를 쌍으로 그룹화read x y
: 첫 번째와 두 번째 숫자를 변수에 저장x
하고y
((...))
Bash에서의 산술 평가
합계가 어떻게 증가하는지 화면에서 볼 수 있습니다.
답변2
paste
다음을 사용하여 bc
원하는 것을 수행 할 수 있습니다 .
$ paste -d"*" - - <file.txt | paste -d"+" - - | bc
14
무너지다
paste
여기서 우리는 한 번에 2개씩 취하고 그 사이에 곱셈 기호를 넣는 것을 볼 수 있습니다 .
$ paste -d"*" - - <file.txt
3*2
4*2
비슷한 접근 방식을 사용하여 곱셈 기호를 포함할 수 있습니다.
$ paste -d"*" - - <file.txt | paste -d"+"
3*2+4*2
마지막으로 완성된 문자열을 전달하여 bc
수학 연산을 수행할 수 있습니다.
$ paste -d"*" - - <file.txt | paste -s -d'+' | bc
14
paste
위 명령의 사용법은 다양합니다. X*Y를 형성하기 위해 줄 병합을 수행할 때 Paste에게 2줄(대시로 표시됨: )을 사용하도록 지시합니다 - -. 두 번째 경우에는 paste
전체 문자 시리즈를 사용 하고 +각 원자 사이에 하나씩 병합합니다.
답변3
해결책 은 다음과 같습니다 awk
(행 개수가 짝수라고 가정).
awk '{y=$0; getline x; var += x*y};END{print var}' file.txt