Не могли бы вы попробовать следующее (не проверено, поскольку образцы не приведены), в случае солнца o.s используйте /usr/xpg4/bin/awk
ИЛИ /usr/xpg6/bin/awk
(пожалуйста, обратитесь к комментариям в этом ответе для получения более подробной информации).
Похоже, что OP использовал OLD, сломанный awk
, где функция close
не работала в следующем решении, поэтому я предложил OP использовать xpg
awk (s), позже Эд сэр подтвердил это тоже.
#!/bin/bash
awk 'FNR==1 { hdr = $0; next }
{
if($2 != prev){close(file)}
file="file" $2 ".htm"
if(!f[$2]) {print hdr > file; f[$2] = 1 }
print >> file
prev=$2
}' samplefile.txt
ИЛИ попробуйте:
#!/bin/bash
awk 'FNR==1 { hdr = $0; next }
{
file="file" $2 ".htm"
if(file!=prev){close(prev)}
if(!f[$2]) {print hdr > file; f[$2] = 1 }
print >> file
prev=file
}' samplefile.txt