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
위 내용에는 줄 번호가 포함되어 있습니다)