문자열 전까지 텍스트 파일의 모든 행을 제거 :배쉬 스크립트는 내가 같은 단어를 많이 가진 파일이
one
two
three
four
tree
house
cat
dog
etc
를 내가 얻을 수있는 방법으로 "집"까지 모든 단어를 제거하려면 전용 :
cat
dog
etc
문자열 전까지 텍스트 파일의 모든 행을 제거 :배쉬 스크립트는 내가 같은 단어를 많이 가진 파일이
one
two
three
four
tree
house
cat
dog
etc
를 내가 얻을 수있는 방법으로 "집"까지 모든 단어를 제거하려면 전용 :
cat
dog
etc
awk '
BEGIN { noprint = 1; cue = ARGV[1]; ARGV[1] = ""}
(!noprint) { print }
(noprint && $0 == cue) { noprint = 0 }
' house textfile
당신은 물론 떠들썩한 파티 스크립트에 통합 할 수있는 펄 한 줄, 쉽게이 작업을 수행 할 수 있습니다.
$ perl -ne 'print if $ok; $ok=1 if /^house$/' sample.txt
cat
dog
etc
sed -n '0,/^house$/d;p' input.txt
이 파일은 나를 위해 전체 파일을 출력합니다. (OS X 10.6.6에서 sed 실행하기) –
@Simon Whitaker - ill, 질문 다시 읽기 – ajreal
GNU'sed'는 주소로서 0을 지원하지만 다른 것들은 지원하지 않습니다. '0,/regex /'와'1,/regex /'의 차이점은 정규 표현식이 첫 번째 줄과 일치하면 0 형식이 범위를 끝내지 만 1 형식은 다음 정규 표현식 일치까지 기다릴 것이라는 것입니다 범위를 끝내십시오. –
은 또한 작업의 이런 종류의 유닉스 텍스트 편집기 에디션을 사용할 수 있습니다. ed는 전체 파일을 메모리로 읽어 들이고 이전에 백업하지 않고 현재 위치에서 파일을 편집합니다. 참조하시기 바랍니다 에디션에 대한 자세한 내용은
# prints result to stdout
printf '%s\n' H ',g/^house$/1,/^house$/d' ',p' | ed -s file
printf '%s\n' H ',g/^house$/1,//d' ',p' | ed -s file # short version
# edits file in-place
printf '%s\n' H ',g/^house$/1,/^house$/d' wq | ed -s file
:
"스크립트에서 에드 텍스트 편집기로 편집 파일을"
이것은 나를 위해 작동하지 않습니다, 나는 얻을 전혀 출력이 없습니다. –
이봐, -1은 뭐니? 이것은 데비안 5.0의'gawk' 3.1.5에서 작동합니다. –
예 : http://cl.ly/0m2g1R2x2X430K123P14 –