다음과 같은 입력 데이터가 있습니다.
student:xxxxx
student:yyyyy
student:zzzzz
student:kkkkk
student:.
teacher:aaaaa
teacher:bbbbb
teacher:lllll
teacher:.
student:sssss
student:mmmmm
student:.
다음과 같은 데이터를 추출해야 합니다.
student:xxxxx yyyyy zzzzz kkkkk.
teacher:aaaaa bbbbb lllll.
student:sssss mmmmm.
sed
다음을 사용하여 어떻게 이 작업을 수행할 수 있습니까 ?awk
답변1
$ cat tst.awk
BEGIN { FS=":" }
{
if ($2==".") {
ORS = "\n"
OFS = ""
cnt = 0
}
else {
ORS = ""
OFS = " "
cnt++
}
print (cnt==1 ? $0 : OFS $2)
}
$ awk -f tst.awk file
student:xxxxx yyyyy zzzzz kkkkk.
teacher:aaaaa bbbbb lllll.
student:sssss mmmmm.
그것이 어떻게 작동하는지 모른다면 Arnold Robbins가 쓴 책 Effective Awk 프로그래밍, 제4판에 사용된 모든 구성을 연구할 수 있습니다.
답변2
일방 sed
통행:
/:\./! { s/^.*://; H }
/:\./ { G; s/\n/ /g; s/\. //; s/$/./p; s/.*//; x }