[1] Check if the content of file X is in another file Y
One option is to rely on comm
utility to compare common lines in both files. comm
requires both files to be sorted.
comm
utility produces three text columns as output -> lines found only in file1, lines found only in file2 and lines found in both files. In order to check the existence of file X's content in file Y, simply run comm
command with sorted conent of both files and suppress first two columns of output. Then simply match the line count from the output with the line count of file X.
eg.,
$ cat /tmp/fileX Oh, yes I can make it now the pain is gone All of the bad feelings have disappeared $ cat /tmp/fileY Gone are the dark clouds that had me blind It's gonna be a bright bright Bright bright sunshiny day It's gonna be a bright bright Bright bright sunshiny day Oh, yes I can make it now the pain is gone All of the bad feelings have disappeared Here is that rainbow I've been praying for It's gonna be a bright bright $ comm -12 <(sort -u fileX) <(sort -u fileY) All of the bad feelings have disappeared Oh, yes I can make it now the pain is gone $ comm -12 <(sort -u fileX) <(sort -u fileY) | wc -l 2 <== number of lines common in both files $ wc -l fileX 2 fileX <== numer of lines in source file
In above example, the numer of lines in source file match with the number of common lines in both files - so, we can assume that the content of file X is found in file Y.
To be clear, this is not really fool-proof but may work in majority of cases.
<(command)
syntax invokes process substitution. Perhaps it is a topic for another post.
[2] Checking shell script syntax without running it
Specify -n
option. No commands will be executed in this "noexec" mode.
bash -n <script> sh -n <script>
eg.,
$ cat -n hello.sh 1 #!/bin/bash 2 echo 'Hi Hola 3 echo "Ni Hao Namaste" Syntax Check $ bash -n hello.sh hello.sh: line 2: unexpected EOF while looking for matching `'' hello.sh: line 4: syntax error: unexpected end of file Execute to confirm $ ./hello.sh ./hello.sh: line 2: unexpected EOF while looking for matching `'' ./hello.sh: line 4: syntax error: unexpected end of file
No comments:
Post a Comment