Issue
I have a log file which looks like below. It shows that there are many file are missing. I would like to list it.
$cat datafile.txt
/data/kay/20091012.csv
gawk: cmd. line:4: (FILENAME=/data/kay/out/501_20091013.txt FNR=1) fatal: file not file
/data/kay/20091014.csv
gawk: cmd. line:4: (FILENAME=/data/kay/out/501_20091015.txt FNR=1) fatal: file not file
gawk: cmd. line:4: (FILENAME=/data/kay/out/501_20091016.txt FNR=1) fatal: file not file
/data/kay/20091017.csv
gawk: cmd. line:4: (FILENAME=/data/kay/out/501_20091018.txt FNR=1) fatal: file not file
I would to list the dates on which the file is missing. My script is below:
$script.sh
awk '{if($1 -eq "gawk")print $4}' datafile.txt
echo ${echo $(awk '{if($1 -eq "gawk")print $4}' datafile.txt):-14,8}
It is showing error. "Bad substitution"
My desire output:
$outfile.txt
20091013
20091015
20091016
20091018
Solution
Using sed
$ sed -En '/^ +gawk/s/[^)]*_([^.]*).*/\1/woutput.txt' input_file
$ cat output.txt
20091013
20091015
20091016
20091018
Using awk
$ awk -F"[_.]" '/gawk/{print $3 > "output.txt" }' input_file
$ cat output.txt
20091013
20091015
20091016
20091018
Answered By - sseLtaH Answer Checked By - Marilyn (WPSolving Volunteer)