"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