awk saves pipes
awk is a powerful tool, but unfortunately I'm yet to learn it, so typically just pipe output to sed to perform substitutions.
Considering the following input:
input='ls: cannot access /home/aws/sshfs/i-3abab67e.log: No such file or directory'
Pipe to sed for substitution:
echo $input | awk '{print$4}' | sed 's|/home/aws/sshfs/||;s|.log:||;'
i-3abab67e
Or do it right inside of awk:
echo $input | awk '{gsub("/home/aws/sshfs/", ""); gsub(".log:", ""); print$4}'
i-3abab67e
Though it does take a few more characters, the latter saves a pipe and that feels like the right thing to do..
Leave a comment