各行は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
これを行うために2つのawkスクリプトを使用する必要はありません。 1つだけで十分です。
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