Differences between revisions 5 and 6
Revision 5 as of 2020-04-04 07:11:57
Size: 832
Editor: PieterSmit
Comment:
Revision 6 as of 2020-06-26 13:19:18
Size: 1573
Editor: PieterSmit
Comment:
Deletions are marked like this. Additions are marked like this.
Line 24: Line 24:

=== awk script to duplicate section under " labels:" of k8s yaml file to " spec: { selector: { matchLables: <...> } } ===
 * Explain
   1. looks for /Deployment/ set f=0
   1. look for /labels:/ but only if f=0, set it to 1
   1. look for /spec:/ only if f=1, increase it and run only if=2, now insert info captured in var a
   1. else save line in a[c++] if f
 * Script {{{
#!/bin/bash
# Reads k8s deployment.yaml, copy the labels: to spec: selector:
gawk -i inplace '
{ print }
/Deployment/ { f=0 }
/labels:/ { if(f == 0) f=1 }
/spec:/ { if(f == 1) {
    f=f+1
    if (f==2) {
      print " selector:"
      print " matchLabels:"
      for(i=2;i<=c;i++) print " "a[i]
    }
  }
}
f{ a[++c]=$0 }
' $1

}}}

Describe Linux/FindGrepAwkSedXargs here.

Find files containing something in Linux

Search dir for files containing string and replace all of them

##e.g. search for tentant -> tenant
grep -irlZ 'tentant' ./ |  xargs -0  sed -i 's/tentant/tenant/g'

Bash loop over files

  • Rather than using find and xargs, use globing to find and process files in bash
    • e.g.

      #By enabling the globstar option, you can glob all matching files in this directory and all subdirectories:
      # Make sure globstar is enabled
      shopt -s globstar
      for i in **/*.txt; do # Whitespace-safe and recursive
          process "$i"
      done

awk script to duplicate section under " labels:" of k8s yaml file to " spec: { selector: { matchLables: <...> } }

  • Explain
    1. looks for /Deployment/ set f=0
    2. look for /labels:/ but only if f=0, set it to 1
    3. look for /spec:/ only if f=1, increase it and run only if=2, now insert info captured in var a
    4. else save line in a[c++] if f
  • Script

    # Reads k8s deployment.yaml, copy the labels: to spec: selector:
    gawk -i inplace '
    { print }
    /Deployment/ { f=0 }
    /labels:/ { if(f == 0) f=1 }
    /spec:/ { if(f == 1) {
        f=f+1
        if (f==2) {
          print "  selector:"
          print "    matchLabels:"
          for(i=2;i<=c;i++) print "  "a[i]
        }
      }
    }
    f{ a[++c]=$0 }
    ' $1


CategoryLinux

Linux/FindGrepAwkSedXargs (last edited 2024-01-24 20:48:46 by PieterSmit)