>source

데이터 파일이 있는데 첫 번째 문자와 마지막 문자를 제거하고 싶습니다. 이를 수행하는 간단한 방법이 있습니까? 온라인으로 검색했지만 간단한 방법을 찾지 못했습니다. 감사합니다!

  • 답변 # 1

    당신이 awk 에 괜찮다면

    다음을 시도하십시오 .

    awk '
    prev{
      if(++count==1){
          print substr(prev,2)
      }
      else{
          print prev
      }
      prev=""
    }
    {
      prev=$0
    }
    END{
      if(prev){
          print substr(prev,1,length(prev)-1)
      }
    }'    Input_file
    
    

  • 답변 # 2

    awk 사용 *. Lorem\nipsum 로 테스트  (그렇지 않으면 제거되는 후행 줄 바꿈이 없습니다 **) :

    $ echo -en Lorem\\nipsum | awk -v RS="^$" '{gsub(/^.|.$/,"")}1'
    orem
    ipsu
    
    

    솔루션은 처리하기 전에 전체 입력을 메모리로 읽어서 단점으로 간주 될 수 있습니다.

    * gawk, awk-20121220 및 Busybox awk로 성공적으로 테스트되었으며 mawk로 실패했습니다.

    ** "마지막 문자":

    $ echo -e Lorem\\nipsum  # outputs:
    Lorem\n
    ipsum\n                  # \n is last char but print (well, 1) adds another
    
    

    이를 피하려면 printf 를 사용하십시오.  대신 :

    $ echo -e Lorem\\nipsum | awk -v RS="^$" '{gsub(/^.|.$/,"");printf "%s",$0}'
    orem
    ipsum$
    
    

  • 답변 # 3

    시도 :

    sed -i '1s/.\(.*\)/\1/; $s/\(.*\)./\1/' path/to/file.txt
    
    

    -i : 파일을 제자리에 수정

    1s : 줄 번호 1에만 대체 명령 적용

    $s : 마지막 줄에만 대체 명령 적용

    \( ... \) : \1 로 참조하여 나중에 사용할 캡처 그룹

    기본적으로 이것들은 ; 로 붙어있는 두 개의 sed 대체 명령입니다.

    수정 : 방금 당신이 단순하다고 말했다는 것을 깨달았습니다 ... 이것이 단순에 해당되는지 확실하지 않습니다.

  • 이전 typescript - 각도 단위 테스트 - 제네릭을 사용하여 구성 요소 만들기
  • 다음 amazon web services - ECS CPU/메모리 사용 컨테이너