174
Comment:
|
1573
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
Describe Linux/FindGrepAwkSed here. | ## page was renamed from Linux/FindGrepAwkSed Describe Linux/FindGrepAwkSedXargs here. |
Line 5: | Line 6: |
* [[regex]] only part of grep match returned == 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 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
https://swcarpentry.github.io/shell-novice/07-find/index.html
regex only part of grep match returned
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
- looks for /Deployment/ set f=0
- look for /labels:/ but only if f=0, set it to 1
- look for /spec:/ only if f=1, increase it and run only if=2, now insert info captured in var a
- 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