다음으로 시작하는 수천 줄의 파일이 있습니다.
>Miriam132_38138 Otu32555|1
Miriam*********
각 줄이 다음으로 시작되도록 ''를 제거해야 합니다 .
>Otu32555|1
첫 번째 문자열은 항상 "Miriam"이라는 단어와 7, 8 또는 9자의 집합입니다. 나는 별 성공 없이 조금 가지고 놀았습니다 sed
.
답변1
줄에서 첫 번째 "단어"를 제거하려면 다음과 같이 사용할 수 있습니다.
awk '{print $2}' input.txt
"단어" 사이에 공백이 있다고 가정합니다.
답변2
7-9개의 문자 집합이 공백으로 끝나고 해당 문자가 Miriam
줄에 한 번만 나타난다고 가정합니다.
sed 's/\(.*\)Miriam.* /\1/' input.txt
이 \(.*\)
부분은 이전에 일치한 패턴을 "저장" Miriam
하고 다시 넣습니다.\1
답변3
sed '/^Miriam/s/[^ ]* *//' <in >out
...그럴 거예요. 문자열로 시작하는 모든 줄에서 제거됩니다.미리암공백이 아닌 문자의 첫 번째 시퀀스만 있고 그 뒤에 공백 문자의 첫 번째 문자열이 옵니다. 그럴 것이다아니요모든 라인에 영향을 미칩니다아니요이 문자열로 열면아니요해당 문자열의 첫 번째 항목을 제외하고 모두 제거합니다.
답변4
사용 awk
:
awk '{print substr($0, index($0, $2))}' file
첫 번째 필드만 삭제되고 다른 모든 필드는 인쇄됩니다.
또는 sed
:
sed 's/Miriam132_38138 \+//' file
>
줄의 시작 부분을 유지해야 하는 경우 첫 번째 일치 항목만 제거됩니다.