![레코드 크기가 일치하지 않는 경우 sed를 사용하여 보고하세요. [닫기]](https://linux55.com/image/133518/%EB%A0%88%EC%BD%94%EB%93%9C%20%ED%81%AC%EA%B8%B0%EA%B0%80%20%EC%9D%BC%EC%B9%98%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EA%B2%BD%EC%9A%B0%20sed%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EB%B3%B4%EA%B3%A0%ED%95%98%EC%84%B8%EC%9A%94.%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
sed
크기가 21이 아닌 파일의 첫 번째 레코드를 어떻게 보고합니까 ?
sed
전체 파일을 스캔하고 크기가 21이 아닌 첫 번째 레코드를 찾자마자 종료하고 싶지 않습니다 .
답변1
sed -n '/^.\{21\}$/! {p;q;}' file
답변2
사용 awk
(가장 쉬울 것입니다):
awk 'length != 21 { printf("Line of length %d found\n", length); exit }' file
또는 쉘 스크립트의 일부로
if ! awk 'length != 21 { exit 1 }' file; then
echo 'Line of length != 21 found (or awk failed to execute properly)'
else
echo 'All lines are 21 characters (or the file is empty)'
fi
사용 sed
:
sed -nE '/^.{21}$/!{p;q;}' file
GNU를 사용 sed
하면 할 수 있습니다
if ! sed -nE '/.{21}$/!q 1' file; then
echo 'Line with != 21 characters found (or sed failed to run properly)'
else
echo 'All lines are 21 characters (or file is empty)'
fi
답변3
GNU 사용 grep
:
if line=$(grep -Exnvm1 '.{21}' < file); then
printf >&2 'Found "%s" which is not 21 characters long\n' "$line"
fi
( -n
위 내용에는 줄 번호가 포함되어 있습니다)