저는 파일 이름을 인수로 사용하고 파일의 모든 줄을 길이와 함께 인쇄해야 하는 스크립트를 작성해야 하는 작업을 진행 중입니다. 예: 바나나 우유 => 바나나 우유 11 unix 및 linux => 유닉스와 리눅스 14 맥북 프로 => 맥북 프로 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