HTML 파일이 있습니다. 이 작업을 수행하는 모든 줄을 제거하고 싶습니다.아니요로 시작하세요 <tr>
.
나는 시도했다:
cat my_file | sed $'
s/^[^tr].*//
' | sed '/^$/d'
그러나 모든 행을 삭제합니다.
답변1
GNU sed를 사용하여 이것을 시도해 보세요:
sed -n '/^<tr>/p' file
또는
sed '/^<tr>/!d' file
답변2
sed -e '/^<tr>/d'
그 사이의 부분은 /
정규 표현식입니다. 이 d
명령은 일치하는 줄을 삭제합니다.
업데이트: 이런, 안 된다고 말씀하신 걸 보니 죄송합니다. 그래서
sed -e '/^<tr>/!d'
이는 !
게임의 의미를 부정합니다.
답변3
다음과 같은 경우 sed
:
sed -ni '/^<tr>/p' file
-i
-n
모든 줄이 인쇄되지 않도록 파일을 내부에서 편집하세요 sed
. 정규식은 ^
( )로 시작하는 모든 줄 과 일치 <tr>
하고 해당 줄 ( p
)이 인쇄됨을 의미합니다.
그리고 grep
:
grep -E '^<tr>' file
-E
확장 정규식을 해석하려면 grep을 사용하세요 .
그리고 awk
:
awk '/^<tr>/' file
또는 순수 bash
:
while IFS= read -r l; do [[ "$l" =~ ^\<tr\> ]] && echo $l; done <file
[[
bash 내부 조건식 입니다 . $l
정규식과 비교하고 성공하면 ( ) &&
행을 인쇄합니다 echo
.
답변4
가장 간단하고 간단한 대답은 다음과 같습니다.
grep '^<tr>' path/to/file
이는 파일을 직접 수정하고 싶지 않은 경우(sed에서와 같이) 다음 줄로 시작하는 파일만 인쇄하는 것이 좋을 수 있습니다.
그런 다음 출력 결과가 마음에 들면 파일로 인쇄할 수 있습니다.> file
이 경우 특정 명령을 시도하기 전에 파일을 백업하면 시간을 절약할 수 있습니다.