Question

I have multiple files which have the same structure but not the same data. The names are 20140101.log, 20140102.log,… Each of these files contains at the end lines like:

**# observed meteors       : 60**

Perseids (PER)           : #=54  b=-1.0 mag  ECA=1608.3 km^2*h  FLX=33.6 /(10^3*km^2*h)

Sporadics (SPO)          : #=3  b=-0.8 mag  ECA=171.6 km^2*h  FLX=17.5 /(10^3*km^2*h)

S-delta-Aquarids (SDA)   : #=2  b=-0.7 mag  ECA=69.3 km^2*h  FLX=28.9 /(10^3*km^2*h)

kappa-Cygnids (KCG)      : #=1  b=-1.2 mag  ECA=369.8 km^2*h  FLX=2.7 /(10^3*km^2*h)

From each of these files I would like to extract all lines followed by line “# observed meteors : ” to another file. In addition I would like to append to each of these line data taken from filename. So target file should contain only lines like these:

20140101    Perseids (PER)           : #=54  b=-1.0 mag  ECA=1608.3 km^2*h  FLX=33.6 /(10^3*km^2*h)

20140101    Sporadics (SPO)          : #=3  b=-0.8 mag  ECA=171.6 km^2*h  FLX=17.5 /(10^3*km^2*h)

Stepping further. I have 2 variables in my script:

$katalog=pav13 and $katalog_daty=20140101.

What I would like to get is the line like this:

pav13 20140101    Perseids (PER)           : #=54  b=-1.0 mag  ECA=1608.3 km^2*h  FLX=33.6 /(10^3*km^2*h)

Using

awk '/^# observed meteors/{s=1;i=1;next} i{print '$katalog_daty', $0;next}' 20140101.log

gives

20140101    Perseids (PER)           : #=54  b=-1.0 mag  ECA=1608.3 km^2*h  FLX=33.6 /(10^3*km^2*h)

but I cannot find out how to include $katalog to the beginning of line. This doesn't work

awk '/^# observed meteors/{s=1;i=1;next} i{print '$katalog' '$katalog_daty', $0;next}' 20140101.log
Was it helpful?

Solution

Using awk you can do:

awk '/^# observed meteors/{s=1;i=1;next} i{print FILENAME, $0;next}' 20140101
20140101 Perseids (PER)           : #=54  b=-1.0 mag  ECA=1608.3 km^2*h  FLX=33.6 /(10^3*km^2*h)
20140101 Sporadics (SPO)          : #=3  b=-0.8 mag  ECA=171.6 km^2*h  FLX=17.5 /(10^3*km^2*h)
20140101 S-delta-Aquarids (SDA)   : #=2  b=-0.7 mag  ECA=69.3 km^2*h  FLX=28.9 /(10^3*km^2*h)
20140101 kappa-Cygnids (KCG)      : #=1  b=-1.2 mag  ECA=369.8 km^2*h  FLX=2.7 /(10^3*km^2*h)
20140101 Antihelion (ANT)         : #=0  b=--- mag  ECA=164.1 km^2*h  FLX=0.0 /(10^3*km^2*h)
20140101 alpha-Capricornids (CAP) : #=0  b=--- mag  ECA=572.8 km^2*h  FLX=0.0 /(10^3*km^2*h)

UPDATE: To pass variables to awk from shelL;

awk -v katalog="$katalog" -v katalog_daty="$katalog_daty" '/^# observed meteors/{
   s=1;i=1;next} i{print katalog, katalog_daty, $0; next}' 20140101.log
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top