파일에서 특정 문자만 포함된 줄을 제거합니다.

파일에서 특정 문자만 포함된 줄을 제거합니다.

줄 끝 문자만 포함된 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

관련 정보