sed는 패턴과 N번 일치합니다.

sed는 패턴과 N번 일치합니다.

파일을 각각 2단어로 나누고 싶습니다.

$cat tmp
word1 word2 word3 word4 word5 word6 word7
$sed -e 's/word. word. /&\n/g' tmp
word1 word2 
word3 word4 
word5 word6 
word7
$sed -e 's/word. \{2\}/&\n/g' tmp
word1 word2 word3 word4 word5 word6 word7

마지막 명령이 이전 명령과 동일한 결과를 제공할 것으로 예상했습니다. 뭐가 문제 야?

답변1

죄송합니다. 게시한 후에 발견한 것 같습니다.

그럴 필요가있다

sed -e 's/\(word. \)\{2\}/&\n/g' tmp

sed가 이전 공백뿐만 아니라 {2}전체 패턴에 조건을 적용하도록 하려면 괄호가 분명히 필요합니다 .word.

답변2

또 다른 방법 sed:

$ sed 's/ /\x1&\x2/g; s/\([^\x1]*[\x1][^\x2]*[\x2][^\x1]*\)[\x1][^\x2]*[\x2]/\1\
/g; s/[\x1\x2]//g'

답변3

N번 일치하는 일반적인 경우:

$ perl -ple '$N=3;s/(\S+ ){$N}\K/\n/g' tmp
word1 word2 word3 
word4 word5 word6 
word7

관련 정보