반응형
sed 또는 awk : 패턴에 따라 n 줄 삭제
sed (또는 사용 도구-예를 들어 awk)에서 패턴과 숫자 범위를 어떻게 사용할 수 있습니까? 내가 원하는 파일의 특정 줄을 검색하기 전에 다음 n 줄을 삭제하는 것입니다. 파이프 라인의 일부로 수행하고 싶습니다.
나는 이것에 갈 것이다.
패턴 뒤의 5 줄 삭제 (패턴이있는 줄 포함) :
sed -e '/pattern/,+5d' file.txt
패턴 뒤의 5 줄 삭제 (패턴이있는 줄 제외) :
sed -e '/pattern/{n;N;N;N;N;d}' file.txt
간단한 awk
솔루션 :
일치하는 줄을 찾는 데 사용할 정규식이 쉘 변수에 저장되고 $regex
건너 뛰어 줄 수라고 가정합니다 $count
.
하는 줄 일치 여부 도 계명 건너 뛰어야 하는 경우 ( $count + 1
줄 건너 뛰기) :
... | awk -v regex="$regex" -v count="$count" \
'$0 ~ regex { skip=count; next } --skip >= 0 { next } 1'
는 IF 일치 여부하는 라인은해야 우리 하지 건너 뛸 수 ( $count
-ray 후 경기는 건너 뜁니다) :
... | awk -v regex="$regex" -v count="$count" \
'$0 ~ regex { skip=count; print; next } --skip >= 0 { next } 1'
설명 :
-v regex="$regex" -v count="$count"
같은 이름의 쉘 변수를awk
기반으로 변수를 정의 합니다 .$0 ~ regex
관심 라인과 일치{ skip=count; next }
건너 뛰기 횟수를 초기화하고 다음 줄로 진행하여 일치하는 줄을 건너 뜁니다. 두 번째 솔루션에서는print
이전next
이 건너 뛰지 마십시오 .--skip >= 0
건너 뛰기 뛰기 때를 사용하면 (경우 여전히)> = 0 인 경우 조치를 취합니다. 이는 당면한 줄을 건너 뛰야 함을 의미합니다.{ next }
다음 줄로 진행하여 현재 줄을 건너 뛰십시오.
1
일반적으로 사용되는 속기입니다{ print }
. 즉, 현재 행이 인쇄됩니다.- 뛰지 않은 줄만이 명령에 도달합니다.
- 그 이유
1
에 해당되고 그는{ print }
인1
정의로 항상 (블록) 있고 동작이 무조건 실행하는 수단은, 참 평가하는 부울 패턴으로 해석된다. 이 경우 검증 조치 가 품목awk
기본적으로 행 을 인쇄 합니다.
GNU 확장이없는 경우 (예 : macOS) :
패턴 뒤 5 줄 삭제 (패턴이있는 줄 포함)
sed -e '/pattern/{N;N;N;N;d;}'
내부 -i ''
편집을 위해 추가 합니다.
이 솔루션을 사용하면 "n"을 사용하여 "n"을 사용하는 파일에서 패턴을 읽습니다.
awk -v n=5 '
NR == FNR {pattern[$0]; next}
{
for (patt in pattern) {
if ($0 ~ patt) {
print # remove if you want to exclude a matched line
for (i=0; i<n; i++) getline
next
}
}
print
}
' file.with.patterns -
"-"라는 파일은 awk의 stdin을 파이프 라인에 적합합니다.
이 당신을 위해 일할 수 있습니다.
cat <<! >pattern_number.txt
> 5 3
> 10 1
> 15 5
> !
sed 's|\(\S*\) \(\S*\)|/\1/,+\2{//!d}|' pattern_number.txt |
sed -f - <(seq 21)
1
2
3
4
5
9
10
12
13
14
15
21
Perl 사용
$ cat delete_5lines.txt
1
2
3
4
5 hello
6
7
8
9
10
11 hai
$ perl -ne ' BEGIN{$y=1} $y=$. if /hello/ ; print if $y==1 or $.-$y > 5 ' delete_5lines.txt
1
2
3
4
11 hai
$
참고 URL : https://stackoverflow.com/questions/4396974/sed-or-awk-delete-n-lines-following-a-pattern
반응형
'IT' 카테고리의 다른 글
Homebrew : 최고 공식 만평 (0) | 2020.09.07 |
---|---|
re 모듈의 정규식이 단어 경계 (\ b)를 지원하고? (0) | 2020.09.07 |
jQuery 플러그인 구문을 이해하고 싶습니다. (0) | 2020.09.07 |
Jekyll 날짜 형식은 어떻게 작동 작동합니까? (0) | 2020.09.07 |
Java에서 JsonNode를 수정하는 방법은 무엇입니까? (0) | 2020.09.07 |