특정 문자 앞뒤의 문자열을 제거하는 방법은 무엇입니까?

특정 문자 앞뒤의 문자열을 제거하는 방법은 무엇입니까?

다음으로 시작하는 수천 줄의 파일이 있습니다.

>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

>줄의 시작 부분을 유지해야 하는 경우 첫 번째 일치 항목만 제거됩니다.

관련 정보