그래서 나는 모두 8로 끝나고 일부는 중간에 8을 갖는 여러 줄의 문자가 있습니다. 특히 파일에서 중간에 8이 있는 줄을 추출하고 싶습니다. 여기에 8이 있는 줄의 예가 있습니다. 중간에 다음과 같이 보일 것입니다
lcl|XM_024182377.1_cds_XP_024038145.1_1 AFASYYTQL TFRVTNDHDIVPHLPPYSYFPQKTYHHFPREVWLYHIGLGSLIYEVEKICDGSGE DPCSRSVTGNSVSDHLVYFGVRMGCNEWTPCRIVMDPRVAEYGKTDLKGNFILSRPPAASILKLRTDSD AAGNHF8
답변1
여러 조건이 필요할 때 awk
사용하는 것이 더 쉬울 수 있습니다 .sed
awk '!/8$/ && /8/' file
그러면 다음 두 가지 기준에 따라 인쇄할 행이 선택됩니다.확실히고정된 정규식 합계 8$
와 일치하다성냥 8
. sed에서도 동일한 논리 sed -n '/8$/!{/8/p;}'
:
AND의 논리 sed
는 약간 다릅니다.
sed '/8$/d; /8/!d' file
8$
일치하거나 일치하지 않는 행을 제거하여 행을 필터링합니다 8
. awk에서도 동일한 논리 awk '/8$/ || !/8/ {next} 1'
:
또는 grep
x2:
grep -v 8$ <file | grep 8
8로 끝나는 줄은 첫 번째 패스에서 거부됩니다. 두 번째 단계에서는 8이 포함된 행을 선택합니다.
답변2
8
귀하의 요구 사항은 불분명하지만 끝에 8이 있는지 여부에 관계없이 중간에 줄을 인쇄하려면 이것이 제가 요구하는 것입니다.생각하다당신이 원하는 것은 :
grep '8.' file
답변3
그렇게:
grep -E '8.+$' <FILE>