다음으로 시작하는 8개의 파일이 있습니다.SEALS-*
각 파일에는 헤더와 데이터가 있습니다.
#Col_1\Col_2\Col_3\col_4 --- header
\\\\\\\\\\ --- data
빈 항목인 경우 \
온라인 상태인 이 레코드를 삭제해야 합니다.
답변1
i
Perl 플래그 사용제자리에서 편집:
$ perl -pi -e '$_ = "" if m{^\\\\}' file.txt
find
파이프 로 내보내 려면 다음을 사용하십시오 xargs
.
$ find . -type f | xargs perl -pi -e '$_ = "" if m{^\\\\}'
find
명령을 사용할 때 -exec
:
$ find . -type f -exec perl -pi -e '$_ = "" if m{^\\\\}' {} \;
답변2
첫 번째 답변:
모든 텍스트 조작에는 Perl이 항상 좋은 선택입니다.
perl -e 'while(<>){print if(!/(\\\\)+/)}' file > file.new
그러나 단지 쉘을 사용하고 싶다면 이 방법도 가능합니다:
grep -v '\\\\' file > file.new
좋은 결과:)
편집하다:
새 파일을 만들 수 없는 경우에도 Perl은 다음을 수행할 수 있습니다.
perl -e 'open FILE_R, "+<$ARGV[0]"; @line=<FILE_R>; open FILE_W,"+>$ARGV[0]"; foreach(@line){print FILE_W if(!/(\\\\)+/);}' file
이 긴 줄을 설명하겠습니다.
open FILE_R, "+<$ARGV[0]"; @line=<FILE_R>;
=> "읽기" 모드에서 파일을 열고 모든 데이터를 배열에 복사합니다.
open FILE_W,"+>$ARGV[0]"; foreach(@line){print FILE_W if(!/(\\\\)+/);}
=> "쓰기" 모드에서 파일을 열고 자르고 모든 데이터(\\ 라인 제외)를 파일에 씁니다.
나는 추천한다이 도구Perl에 대해 더 자세히 알고 싶다면 :)