각 줄은 FEPS로 시작됩니다. FEPS로 시작하지 않는 줄을 이전 줄에 병합한 다음 길이를 기준으로 파일을 정렬합니다. 즉, 길이가 23자인 줄을 유지합니다.
입력하다:
FEPS xxxx01 BUILDING 0
FEPS xxxx02 BUILDING
FEPS xxxx03 BUILDING
0
FEPS xxxx04 BUILDING 0
산출:
FEPS xxxx01 BUILDING 0
FEPS xxxx03 BUILDING 0
FEPS xxxx04 BUILDING 0
다음 스크립트를 사용하면 작동합니다.
awk 'BEGIN
/FEPS/ {
if (NR>1) print ""
printf "%s", $0
next
}
{printf ",%s", $0}
END {print " "}'
위 스크립트의 출력은 다음으로 전달되어야 합니다.
awk 'length ==23 {print $0}'
답변1
$ cat tst.awk
$1 == "FEPS" { prt(); rec="" }
{ rec = rec $0 }
END { prt() }
function prt() { if (length(rec) == 23) print rec }
$ awk -v n=23 -f tst.awk file
FEPS xxxx01 BUILDING 0
FEPS xxxx03 BUILDING 0
FEPS xxxx04 BUILDING 0
답변2
이를 수행하기 위해 두 개의 awk 스크립트를 사용할 필요는 없습니다. 하나만 있으면 충분합니다.
awk 'length($0) == 23 { print ; next };
/^FEPS/ { line=$0; next };
{
line = line $0;
if (length(line) == 23) print line;
line="";
}
' input
샘플 입력을 다음 이름의 파일에 저장한 후 출력 input
:
FEPS xxxx01 BUILDING 0
FEPS xxxx03 BUILDING 0
FEPS xxxx04 BUILDING 0