2
I need to select the lines of a file that contains the characters | or \
diff -y ontem.csv hoje.csv | grep -e "|" -e "\"
How to tell pro grep to return the lines it contains or a pipe | or a bar \ ??
2
I need to select the lines of a file that contains the characters | or \
diff -y ontem.csv hoje.csv | grep -e "|" -e "\"
How to tell pro grep to return the lines it contains or a pipe | or a bar \ ??
5
You can use regular expression [\|], look at you:
grep:
$ diff -y ontem.csv hoje.csv | grep '[\|]'
egrep:
$ diff -y ontem.csv hoje.csv | egrep '[\|]'
awk:
$ diff -y ontem.csv hoje.csv | awk '/[\\|]/{print}'
perl:
$ diff -y ontem.csv hoje.csv | perl -nle 'print if m{[\\|]}'
sed:
$ diff -y novas.csv entrada.txt | sed -n '/[\|]/p'
3
You can use the delimiters [], that take all the characters inside them (to \ must be escaped, so stay \\):
grep -e "[\\|]"
See examples of this regex here.
As reported in the comments, the grep also works without the option -e and no need to escape the bar:
grep "[\|]"
The parameter -e is dispensable and there is no need to escape the bar.
@Lacobus is right. Is that first I tested in regex101.com and there only works if escaping the bar, but in grep does not even need. As for the parameter -e, It’s an old habit I always have to use, even when you don’t need it...
3
Follows:
diff -y ontem.csv hoje.csv | grep "[|\]"
See more in --> https://linux.die.net/man/1/grep
You can also use egrep --> https://linux.die.net/man/1/egrep
No need to escape the bar or pipe.
@Lacobus Valew for correction! Abs.
Browser other questions tagged bash shell-script shell
You are not signed in. Login or sign up in order to post.
What returns in this command you posted ?
– Roknauta
Returns the lines of the diff, as if the grep had not been done.
– Gabriel Hardoim