열에서 "na"를 제거하고 행을 접습니다.

열에서 "na"를 제거하고 행을 접습니다.

"na"가 포함된 행을 삭제하고 싶습니다.

문서

0.000
0.000
0.055
0.036
0.003
0.002
0.000
0.002
0.002
0.002
0.000
na
na
0.000
0.000
na
0.002
0.002
0.003

산출

0.000
0.000
0.055
0.036
0.003
0.002
0.000
0.002
0.002
0.002
0.000
0.000
0.000
0.002
0.002
0.003

R에서 이 작업을 수행하려고 하는데 행을 축소할 수 없습니다. na를 제거하면 됩니다.

답변1

awk를 사용하세요:

awk '!/na/' file > new_file

이 "!"는 불일치를 나타냅니다. "/na/"는 "na" 모드를 지정합니다. 함께 na 패턴을 포함하는 행이 일치하지 않음을 나타냅니다. awk의 기본 동작은 인쇄하는 것이지만 다음과 같이 구체적으로 인쇄하도록 지시할 수도 있습니다(print 함수 호출).

awk '!/na/ {print}' file > new_file

파일에서 빈 줄을 인쇄하지 않으려면 이 정규식을 사용하십시오. !/^$/ 이는 awk가 빈 줄과 일치하지 않도록 지시합니다. "^"로 지정된 줄의 시작부터 "$"로 지정된 줄의 끝까지 일치하며, 사이에는 아무것도 없습니다. "&&"는 각 행을 평가할 때 두 개의 표현식을 사용하도록 지시합니다.

awk '!/na/ && !/^$/ {print}' file > new_file

sed를 사용하세요:

sed '/na/d' file > new_file

"/d는 sed에게 "/na/" 패턴이 포함된 줄을 삭제하라고 지시합니다.

새 파일을 작성하지 않고 소스 파일을 직접 수정하려면 sed의 -i(in-place) 옵션을 사용하세요.

sed -i '/na/d' file

bash가 내장된 bash 쉘만 사용하십시오:

while read -r line; do [[ ! $line =~ na ]] && echo "$line"; done < file > o; mv o file

Python 사용:

with open('file', 'r') as rf:
  with open('out', 'w') as of:
    for line in rf:
      if not "na" in line:
        of.write(line)

다른 모든 예와 마찬가지로 원래 질문에 제공된 예 입력을 고려하면 빈 줄이 남지 않습니다.

$ cat file
0.000
0.000
0.055
0.036
0.003
0.002
0.000
0.002
0.002
0.002
0.000
0.000
0.000
0.002
0.002
0.003

답변2

매우 간단합니다:

grep -v na file > new_file

답변3

I tried with below 3 methods

1.using awk

command:awk '$0 !~/na/{print $0}' filename

2. using sed

sed -n '/na/!p' filename

3. using python

    #!/usr/bin/python
    import re
    k=open('filename','r')
    a=re.compile(r'[0-9]')
    for i in k:
            if re.search(a,i):
                    print i,

산출

0.000
0.000
0.055
0.036
0.003
0.002
0.000
0.002
0.002
0.002
0.000
0.000
0.000
0.002
0.002
0.003

관련 정보