![열의 최대 및 최소 길이 값과 데이터를 가져오시겠습니까? [폐쇄]](https://linux55.com/image/138039/%EC%97%B4%EC%9D%98%20%EC%B5%9C%EB%8C%80%20%EB%B0%8F%20%EC%B5%9C%EC%86%8C%20%EA%B8%B8%EC%9D%B4%20%EA%B0%92%EA%B3%BC%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%EA%B0%80%EC%A0%B8%EC%98%A4%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F%20%5B%ED%8F%90%EC%87%84%5D.png)
10개의 필드가 포함된 탭으로 구분된 파일에서 다음과 같이 필드의 최소 및 최대 길이와 데이터 값을 어떻게 얻을 수 있습니까?
Field1 : Min 5 max 10 abcde abcdefghij
Field2: Min 3 max 5 abc abcde
답변1
다음 스크립트는 필요한 작업을 수행해야 합니다.
#!/usr/local/bin/bash
input=./input
row=0
while read -r line; do
columns=( $line )
((row++))
max=0
min=${#line}
vmax=
vmin=
for column in "${columns[@]}"; do
((${#column}>max)) && max=${#column} && vmax=$column
((${#column}<min)) && min=${#column} && vmin=$column
done
echo "Row${row}: Min $min max $max $vmin $vmax"
done<"$input"
다음 입력이 주어지면:
field0 field1 field2 field3 field4 field5 field6 field7 field8 field9
a aa aaa aaaa aaaaa aaaaaa aaaaaaa aaaaaaaa aaaaaaaaa aaaaaaaaaa
bbbbbbbbbb bbbbbbbbb bbbbbbbb bbbbbbb bbbbbb bbbbb bbbb bbb bb b
다음과 같은 출력이 생성됩니다.
$ ./script.sh
Row1: Min 6 max 6 field0 field0
Row2: Min 1 max 10 a aaaaaaaaaa
Row3: Min 1 max 10 b bbbbbbbbbb
참고: 라인에 동일한 길이의 필드가 여러 개 있고 결국 최소/최대 길이 라인이 되는 경우 해당 길이의 첫 번째 필드가 출력됩니다. (예제에서 입력 row1에는 동일한 길이의 모든 필드가 있으므로 field0을 최소값과 최대값으로 나열합니다.)