조건 부 파일 내용 추출

4145 단어 shell
수요
  • 한 텍스트 문서 의 내용 은 숫자, 영어, 그리고 [] 에 포 함 된 영어
  • 가 있다.
  • 이 문서 에서 영어 만 선별 하고 [] 에 포 함 된 영어
  • 는 포함 되 지 않 습 니 다.
  • 한 줄 의 문자 가 일정한 길이 보다 작은 줄 에 대해 출력 할 때 줄 을 바 꾸 지 않 는 다. 즉, 한 줄 의 문자 가 특정한 길이 보다 작 을 때 다음 줄 과 합 쳐 출력
  • 코드
    while read line; do
    	#statements
    	#                   
    	# [^\[]]:     []  
    	#         []    
    if [[ $line =~ [^\[]] ]]; then
    	continue
    fi
    	# ^[a-zA-Z]:          
    	# [a-zA-Z]:        
    if [[ $line =~ [a-zA-Z] ]]; then
    	#           
    	# ${#line} line    
    	
    	#            ,      > <  
    	if [[ ${#line} -lt 23 ]]; then
    		# echo -e "${line} \c"      
    		echo -e "${line} \c" >> output.txt
    	else
    		echo $line >> output.txt;
    	fi
    
    fi
    done < /personal/shell/a.txt #       
    


    지식 점
  • 정규 표현 식 의 응용
  • 셸 에서 관계 연산 을 할 때 관계 연산 자 를 사용 해 야 합 니 다. 예 를 들 어 코드 의 작은 판단 은 <
  • 가 아 닌 - lt 를 사용 해 야 합 니 다.
  • echo - e "${line}\c"줄 을 바 꾸 지 않 고 출력 합 니 다. ${line} 뒤에 빈 칸 을 추가 해 야 합 니 다. 그렇지 않 으 면 다음 줄 의 단어 와 간격 이 없습니다
  • 밟 은 구덩이
  • echo $line >> output. txt 파일 에 추가 로 출력 하 는 방식 을 사용 하기 때문에 재 테스트 할 때마다 이전에 생 성 된 파일 을 삭제 하 는 것 을 기억 하 십시오. 그렇지 않 으 면 데이터 가 많 으 면 효과 가 없다 고 생각 할 수 있 습 니 다
  • 또 하 나 는 줄 바 꾸 기 문제 입 니 다. 이 문 제 는 오랫동안 괴 롭 혔 기 때문에 발견 하기 어렵 습 니 다.유 닉 스 시스템 과 windows 시스템 에서 서로 다른 줄 바 꿈 자 를 사용 하 는 것 입 니 다. 구체 적 으로 구분 하면 이 글 을 참고 할 수 있 습 니 다. mac 시스템 에 서 는 예전 에 CR 이 었 고 지금도 LF 입 니 다.
  • 여기 서 문 제 는 파일 이 CRLF 줄 바 꿈 을 사용 하면 스 크 립 트 의 줄 바 꿈 출력 이 효과 가 없다 는 것 입 니 다. 파일 이 LF 를 사용 하면 우리 가 설정 한 조건 에 따라 줄 바 꿈 없 이 출력 할 수 있 습 니 다.
  • 그러면 다음 문 제 는 어떻게 CRLF 를 LF 로 바 꾸 느 냐 하 는 것 이다. 인터넷 에서 많은 자 료 를 찾 았 는데 대부분이 크로스 플랫폼 개발 할 때 git 로 어떻게 전환 하 느 냐 하 는 것 이다. 현재 의 조작 은 git 를 사용 하지 않 아 도 그렇게 번 거 로 울 필요 가 없다.
  • 마지막 해결 방법 은 아 이 디 어 를 이용 하 는 것 이다. 아이디어 아래 에 LF 나 CRLF 를 선택 할 수 있 는 옵션 이 있다. LF 를 선택 한 후에 내용 을 아이디어 에 복사 하면 바로 LF 로 전환 할 수 있다.
  • 좋은 웹페이지 즐겨찾기