파일을 각각 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