Linux에서 파일을 구문 분석하고 싶습니다. 기본적으로 이런 패턴이 나올 때마다 [protein=proteinA]
유지하고 싶다 proteinA
. 즉, 다음 9개 문자 사이의 모든 문자를 유지하고 싶습니다.
[protein=
그리고 캐릭터:
]
파일의 모든 패턴에 대해 이 작업을 수행하고 싶습니다. 결과는 다음과 같습니다.
proteinA
proteinB
proteinC
proteinD
Linux에서 이를 달성하는 간단한 명령은 무엇입니까?
답변1
간단한 sed
해결책은
sed 's/\[protein=\(.*\)]/\1/'
입력의 모든 줄이 동일해 보인다면 위 명령이 제대로 작동하는 것입니다. 다른 유형의 데이터가 있고 위에서 얻은 결과가 마음에 들지 않으면 원하는 결과를 지정해야 합니다.[protein=something]
답변2
텍스트가 포함될 수 있는 레이블에 대한 일반적인 해결 방법은 다음 sed 명령을 사용하는 것입니다.
sed -i.bak 's/\[[^=]*=\([^]]*\)]/\1/g' <file to process>
[tagname=something]
이 명령은 , 및 에서 작동하며 태그 이름은 [tagname=
가 ]
아닌 무엇이든 될 수 있습니다 protein
.
-i.bak
파일을 처리하고 원본 파일을 .bak
확장자와 함께 파일 이름에 추가합니다.
답변3
grep
원하는 데이터를 직접 출력할 수 있습니다 .
$ grep -oP '\[protein=\K((?!]).)+(?=])' file