I have been trying to figure out how to use grep
in a bash script to match from a pattern to the end of the file. The file is not always the same number of lines each time and is not always [A-Za-z0-9]
. I'm trying to migrate from a flat-file based catalog to a database.
File excerpt:
First, Last: Doe, John
ID: xxxxxxxx
...
Case Notes:
This "person" does not exist!
Please do not add him.
Thanks.
I need to grab everything from Case Notes:
to the end of file. I can't seem to find anything to help out there as there isn't an actual EOF character.
Ideas?
$1 means an input argument and -z means non-defined or empty. You're testing whether an input argument to the script was defined when running the script. Follow this answer to receive notifications.
So as far as I can tell, %% doesn't have any special meaning in a bash function name. It would be just like using XX instead. This is despite the definition of a name in the manpage: name A word consisting only of alphanumeric characters and under- scores, and beginning with an alphabetic character or an under- score.
The bash documentation just calls it the =~ operator. Is it only used to compare the right side against the left side? The right side is considered an extended regular expression. If the left side matches, the operator returns 0 , and 1 otherwise.
An awk
script might be easier:
awk '/^Case Notes:$/ { matched = 1 } matched'
Or if you don't want to see the Case notes:
string itself, reverse it:
awk 'matched; /^Case Notes:$/ { matched = 1 }'
idiomatic awk
solution would be
awk '/^Case Notes:$/,0'
prints from pattern (inclusive) to end of file.
sed -n '/^Case notes:/,$p' file >newfile
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With