예를 들어, Linux 시스템의 파일에 다음 텍스트가 있는 경우:
10-02-2020
given as file name) for lines containing a match to the given PATTERN. By default, grep prints the matching lines.
In addition, two variant programs egrep and fgrep are available. egrep is the same as grep -E. fgrep is the same as grep -F
16-02-2020
The top program provides a dynamic real-time view of a running
system. It can display system summary information as well as a list
of processes or threads currently being managed by the Linux kernel.
The types of system summary information shown and the types, order
and size of information displayed for processes are all user
configurable and that configuration can be made persistent across
restarts.
16-02-2020
이전 텍스트를 모두 삭제 하고 파일을 다음과 같이 바꾸려면 어떻게 해야 합니까 ?
16-02-2020
The top program provides a dynamic real-time view of a running
system. It can display system summary information as well as a list
of processes or threads currently being managed by the Linux kernel.
The types of system summary information shown and the types, order
and size of information displayed for processes are all user
configurable and that configuration can be made persistent across
restarts.
답변1
를 사용하여 이 작업을 수행할 수 있습니다 sed
. 일반적인 형식은 다음과 같습니다.
sed -n '/pattern1/,/pattern2/p' file
명시적으로 알려주지 않는 한 이유는 인쇄되지 않습니다 -n
. Som 이 명령은 줄 일치와 한 줄 일치(포함) 사이의 모든 줄을 인쇄합니다. 일치하는 항목이 여러 개인 경우 여러 줄이 인쇄됩니다.sed
p
pattern1
pattern2
귀하의 경우 파일 끝까지 모든 내용을 인쇄하려고 하므로 pattern2
다음 $
을 찾고 있습니다.
$ sed -n '/16-02-2020/,$p' file
16-02-2020
The top program provides a dynamic real-time view of a running
system. It can display system summary information as well as a list
of processes or threads currently being managed by the Linux kernel.
The types of system summary information shown and the types, order
and size of information displayed for processes are all user
configurable and that configuration can be made persistent across
restarts.
fgrep
관련이 없고 더 이상 사용되지 않는 주석에서는 및 를 egrep
사용해야 합니다 . 바라보다 :grep -F
grep -E
man grep
또한 변형 프로그램 egrep 및 fgrep은 각각 grep -E 및 grep -F와 동일합니다. 이러한 변형은 더 이상 사용되지 않지만 이전 버전과의 호환성을 위해 제공됩니다.
답변2
펄 버전:
perl -ne '$f=1 if /16-02-2020/; print if $f' file
답변3
파일에서 블록을 자르려면 ed
다음과 같이 한 번에 한 줄씩 작업하는 것보다 파일 전체를 처리하는 것이 sed
더 낫다고 생각합니다.
$ ed -s input.txt
1,/^16-02-2020/-1d
wq
$ cat input.txt
16-02-2020
The top program provides a dynamic real-time view of a running
system. It can display system summary information as well as a list
of processes or threads currently being managed by the Linux kernel.
The types of system summary information shown and the types, order
and size of information displayed for processes are all user
configurable and that configuration can be made persistent across
restarts.
첫 번째 줄부터 시작하는 줄까지 모두 삭제 16-02-2020
하고 수정된 파일을 저장합니다. 스크립트에서 사용되는 경우 구분된 문서를 사용하여 다음으로 명령을 보낼 수 있습니다 ed
.
ed -s input.txt <<EOF
1,/^16-02-2020/-1d
w
EOF