Over a million developers have joined DZone.

Shell Scripting Notes – Searching Matching Filenames and Matching Content

DZone's Guide to

Shell Scripting Notes – Searching Matching Filenames and Matching Content

Here are a few shell scripting notes that might be useful to you.

· DevOps Zone
Free Resource

In response to accelerated release cycles, a new set of testing capabilities is now required to deliver quality at speed. This is why there is a shake-up in the testing tools landscape—and a new leader has emerged in the just released Gartner Magic Quadrant for Software Test Automation.

Some random shell scripting notes for future reference:

  • On OS X: find -E . -regex ‘pattern’

    • E specifies extended regex support
  • On Linux flavors: find . -regextype posix-regex -regex ‘pattern’

  • Posix vs basic vs extended regex character class differences.

  • Pipe result to newfile > : eg grep ‘pattern’ file > output.txt

  • Pipe result appending to file > : eg grep ‘pattern’ file >> output.txt

  • Capture output as String? : $(some expression)

Iterate files:

for f in some-file-pattern or something producing a list of files
do ... done

Use find . -name ‘pattern’ to recurse matching files down subdirs

Find with a regex for multiple patterns:

find -E . -regex ".*ext1|.*ext2|.*ext3"

first line of file:

head -n 1 filename

grep -o : only display match

Match patterns in file and output matches or matched groups:

for f in `find -E . -regex ".*ext1|.*ext2|.*ext3"`
line=$(head -n 1 $f)
if [[ $line =~ TextAtStartOfLine:[[:space:]]*([[:digit:]]+) ]]; then
echo "${BASH_REMATCH[0]}" # print whole match
echo "${BASH_REMATCH[1]}" # print 1st group match

View rawgistfile1.txt hosted by GitHub

Match files, patterns in files, and pipe matches to file:

for f in $(find -E . -regex ".*ext1|.*ext2|.*ext3")
echo $f $'\n' $(egrep -o 'TextAtStartOfLine:[[:space:]]*[[:digit:]]+' $f) $'\n' >> report"$(date)".txt

View rawgistfile1.txt hosted by GitHub

Recently published 5th annual Software Fail Watch Report identified 606 recorded software fails impacting half of the world’s population (3.7 billion people), $1.7 trillion in assets, and 314 companies. Our advice: Rethink your testing strategies and approach to quality so they’re not finding it in your next release.

linux ,script ,shell scripting

Published at DZone with permission of Kevin Hooke, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}