El de posiblesawk
caminos:
awk -F'[[:space:]]+|,' 'NR == FNR{ a[$2] = $1; next }
{
c = 0; r = $1 OFS;
for (i = 2; i <= NF; i++)
if ($i in a) { r = r (c++? "," : "") a[$i] }
if (!c) r = r $2;
print r
}' file2 file1
La salida:
Normal APP1
Normal APP2
Normal APP2,APP3
Normal APP4
Вы можете использовать tail для вывода файла из строки с номером 2001 и передачи результата вашей команде:
<apache.log tail +2001 | grep 'tracker.php' | cut -d' ' -f1-8
Использованиеsed
:
sed '1,2000d; /tracker\.php/!d' | cut -d ' ' -f-8
То есть отбросить строки с 1 по 2000 (включительно ), а затем также отбросить все строки, не содержащие строку tracker.php
. Отправьте остальные строки через cut
.
Вы можете использовать
awk 'NR<2001 {next} /tracker.php/ {print NR, $1,$2,$3,$4,$5,$6,$7,$8}' apache.log
или
awk 'NR<2001 {next} /tracker.php/ {print NR, $0}' apache.log | cut -d' ' -f1-9
, который также будет отображать исходные номера соответствующих строк в файле.