저는 파일 이름을 매개변수로 가져오는 스크립트를 작성하라는 요청을 받는 작업을 진행 중입니다. 그런 다음 파일의 모든 줄과 끝 부분의 길이를 인쇄한다고 가정합니다. 예를 들어 바나나 우유 = >바나나 우유 11 unix 및 linux =>unix 및 linux 14 macbook pro =>macbook pro 11
답변1
이는 파일의 각 줄과 줄의 길이를 인쇄합니다(POSIX 호환 awk 구현에서 줄 구분 기호를 포함하지 않은 문자 수의 관점에서 일부는 대신 바이트 수를 제공합니다).
<FOO awk '{print $0,length}'
그래도 그것이 당신이 요구하는 것인지 확실하지 않습니다.
답변2
해결책 awk
이 가장 좋지만, awk를 사용하지 않으려면 다음과 같은 몇 가지 대안이 있습니다.
while IFS= read -r line
do
printf "%s %d\n" "$line" "${#line}"
done < "$1"
while IFS= read -r line
do
printf "%s %d\n" "$line" "$(expr "$line" : '.*')"
done < "$1"
while IFS= read -r line
do
printf "%s %d\n" "$line" "$(printf "%s" "$line" | wc -c)"
done < "$1"
while IFS= read -r line
do
printf "%s %d\n" "$line" "$(wc -c <<< "$line")"
done < "$1"
변형은 wc -c <<< "$line"
개행 문자를 포함하기 때문에 다른 것보다 높은 숫자를 제공합니다.
답변3
당신이 찾고 있는 것이 무엇인지 정확히 알 수 없습니다. 다음 스크립트는 원하는 출력을 정확하게 제공해야 합니다.
#!/bin/bash
cat $1
cat $1 | wc -m