레코드 크기가 일치하지 않는 경우 sed를 사용하여 보고하세요. [닫기]

레코드 크기가 일치하지 않는 경우 sed를 사용하여 보고하세요. [닫기]

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

관련 정보