문자열 패턴까지 첫 번째 문자부터 문자열 추출

문자열 패턴까지 첫 번째 문자부터 문자열 추출

**$&*#@**필드 구분 기호와 레코드 구분 기호가 있는 **$#@&***암시적 파일이 있습니다. 아래는 그 예입니다.

100$&*#@200$&*#@50$&*#@Some String$&*#@2016-01-01 101010$#@&*101$&*#@210$&*#@51$&*#@Some String$&*#@2016-02-02 101010$#@&*102$&*#@220$&*#@55$&*#@Some String$&*#@2016-03-03 101010$#@&*

데이터 유효성 검사를 위해 위 파일에서 첫 번째 행을 추출하려면 몇 가지 명령이 필요합니다.

이 경우 wc -l연속 스트림(암시적 파일)이므로 0이 반환되므로 head -1을 사용할 수 없습니다.

또한 각 필드를 추출하고 처음 세 필드가 정수인지, 특정 숫자 필드가 특정 형식의 타임스탬프인지 확인해야 합니다.

답변1

귀하의 예제를 저장하기 위해 라는 변수를 사용했습니다 string. 다음은 구분된 필드가 있는 줄로 sed구분됩니다 . 이것을 파이프로 연결하여 첫 번째 행을 얻을 수 있습니다.string:head -1

 echo $string | sed 's/'"$#@&\*"'/\n/g'| sed 's/'"$&\*#@"'/:/g'

cut그런 다음 각 행의 처음 세 필드를 가져와서 해당 필드가 숫자인지 확인할 수 있습니다. 첫 번째 필드 테스트의 예:

field1="$(echo $new_string | cut -d: -f1 | head -1)"
if [ "$field1" -eq "$field1" ] 2>/dev/null; then
  echo "Integer.
else
  echo "Not integer."
fi

루프를 사용하여 모든 값을 구문 분석하고 유효성을 검사할 수 있습니다. 테스트 날짜는 더 복잡할 수 있지만 정규식 등을 사용하여 실행 가능합니다.

관련 정보