줄 끝 문자만 포함된 Unix의 특정 줄을 삭제하는 방법
파일의 내용은 다음과 같습니다.
H XXXXXXXXXXXXXXXXXX ""$SEQ_NO $
$
D^I001000456108^IU$
그것은해야한다,
H XXXXXXXXXXXXXXXXXX ""$SEQ_NO $
D^I001000456108^IU$
답변1
다음과 같은 작업을 수행할 수 있습니다.
sed '/^\$*$/d' filename
견본
$ cat filename
H XXXXXXXXXXXXXXXXXX ""$SEQ_NO $
$
D^I001000456108^IU$
$ sed '/^\$*$/d' filename
H XXXXXXXXXXXXXXXXXX ""$SEQ_NO $
D^I001000456108^IU$
답변2
sed(1)
다음을 사용하여 CR만 포함된 모든 행을 삭제할 수 있습니다 .
cat your_file.txt | sed -e '/^$/d'
답변3
grep -vx '\s*\$\s*' file.txt
-x
전체 행과 정확히 일치하는 일치 항목만 선택-v
일치의 의미를 바꾸고 일치하지 않는 행을 선택합니다.\s*
0개 이상의 공백 문자\$
$
문자 일치
관련 줄에 선행 및 후행 공백이 없는 것으로 알려진 경우:
grep -vx '\$' file.txt
답변4
그것은 단지:
grep . < file.in > file.out
grep .
하나 이상의 문자가 포함된 줄을 찾습니다. 이는 빈 줄이나 유효한 단일 문자를 형성하지 않는 바이트 시퀀스를 포함하는 줄을 제외한 모든 줄입니다.
그리고:
LC_ALL=C grep .
각 바이트 시퀀스가 유효한 문자를 형성하는지 확인하여 유효하지 않은 텍스트 줄(있는 경우)을 보존합니다. 또는 다음을 사용할 수 있습니다.
grep -vx ''
또 다른 옵션은 다음과 같습니다.
awk length < file.in > file.out
마찬가지로, 문자가 아닌 문자만 포함된 줄에 대해 0을 반환할 수 있는 구현을 찾을 수 있습니다 awk
.length
$
문자가 하나만 포함된 행(뒤에 개행 문자)을 삭제하려면 다음을 수행하십시오.
grep -vxF '$' < file.in > file.out