다음과 같은 텍스트 파일 text
이 있습니다. 행과 열은 다음과 같습니다.
1 A 18 -180
2 B 19 -180
3 C 20 -150
50 D 21 -100
128 E 22 -130
140 F 23 -0
while 루프를 사용하여 한 줄씩 반복하려면 다음과 같습니다.
while read -ra a; do [[ ${a[3]} != -0 ]] && ((a[3]+=42)); echo "${a[@]}"; done < file
출력은 다음과 같습니다.
1 A 18 -138
2 B 19 -138
3 C 20 -108
50 D 21 -58
128 E 22 -88
140 F 23 -0
위 줄에서 일어난 일은 42
네 번째 열의 각 줄에 추가하는 것입니다.0.
첫 번째 열을 사용하여 여러 열 범위를 선택하려면 어떻게해야합니까? 예를 들어, 2 to 50
첫 번째 열 에서만 선택하고 싶습니다. 즉, 2nd, 3rd and 4th
열만 인쇄하고 싶습니다 . 따라서 출력은
2 B 19 -138
3 C 20 -108
50 D 21 -58
첫 번째 해결책 : 조건을 충족하는 라인 만 인쇄하고 해당 라인에 대해서만 작업을 수행하려면 다음을 시도하십시오.
awk '$1>=2 && $1<=50{$4+=42;print}' Input_file
왜 awk
? bash 또는 셸 루프를 사용하여 여기에서 파일을 처리하는 것과 비교할 때 더 빠르고 확실한 선택이기 때문입니다.
두 번째 솔루션 : OP가 셸에서만 수행하려는 경우 다음을 시도 할 수 있습니다.
while read first second third fourth
do
if [[ "$first" -ge 2 && "$first" -le 50 ]]
then
echo "$first $second $third $((fourth+42))"
fi
done < "Input_file"
위 코드에 대한 출력은 다음과 같습니다.
2 B 19 -138
3 C 20 -108
50 D 21 -58
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다