Bash-interesting-command-examples: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
mNo edit summary |
||
| Line 29: | Line 29: | ||
<pre> | <pre> | ||
sudo find . -type d -not -name "[a-zA-Z0-9]*" -exec rm -rf {} \; | sudo find . -type d -not -name "[a-zA-Z0-9]*" -exec rm -rf {} \; | ||
</pre> | |||
Who the hell thought it was a good idea to NOT have xml2 available in both Mac and Linux? What the hell!?!? | |||
* On Mac install gawk via brew | |||
* will leverage xmllint, and then stupidity ensues... WTF? | |||
* never trust this in prod-ish servers without a lot of testing. chatGPT gave this suggestion as a workaround to get the xml2 behavior. | |||
* I am betting that complex xml will make this choke or turn into a pumpkin but meh, it works well enough for simple stuff. | |||
<pre> | |||
echo '<root><name>Chris</name></root>' | xmllint --format - 2>/dev/null | gawk ' | |||
/<[[:alnum:]_:-]+>/ { | |||
tag = gensub(/.*<([[:alnum:]_:-]+)>.*/, "\\1", "g") | |||
path = (path ? path "/" tag : "/" tag) | |||
} | |||
/<\/[[:alnum:]_:-]+>/ { | |||
if ($0 ~ /<[[:alnum:]_:-]+>[^<]+<\/[[:alnum:]_:-]+>/) { | |||
val = gensub(/.*<[[:alnum:]_:-]+>([^<]+)<\/[[:alnum:]_:-]+>.*/, "\\1", "g") | |||
print path "=" val | |||
} | |||
sub(/\/[^/]+$/, "", path) | |||
}' | |||
</pre> | </pre> | ||
Latest revision as of 08:21, 28 October 2025
Interesting one-liners
- Find all drives and ignore loop devices
root@kvm03:/var/log# lsblk | grep -v "loop\|NAME" | grep "^[a-z]\|^[A-Z]" | awk '{print $1}'
sda
sdb
root@kvm03:/var/log#
root@kvm03:/var/log# lsblk | grep disk | awk '{print $1}'
sda
sdb
root@kvm03:/var/log#
Continue match until match is found
- This is using awk, and seems quite powerful as a tool
- found this little gem at Stack Exchange
awk '/Word A/,/Word D/' filename /From/CONTINUE/Until/
- Remove non-english directories
- change the type to f if you are looking for non-english files
- ALWAYS test find results before deleting, duh!
sudo find . -type d -not -name "[a-zA-Z0-9]*" -exec rm -rf {} \;
Who the hell thought it was a good idea to NOT have xml2 available in both Mac and Linux? What the hell!?!?
- On Mac install gawk via brew
- will leverage xmllint, and then stupidity ensues... WTF?
- never trust this in prod-ish servers without a lot of testing. chatGPT gave this suggestion as a workaround to get the xml2 behavior.
- I am betting that complex xml will make this choke or turn into a pumpkin but meh, it works well enough for simple stuff.
echo '<root><name>Chris</name></root>' | xmllint --format - 2>/dev/null | gawk '
/<[[:alnum:]_:-]+>/ {
tag = gensub(/.*<([[:alnum:]_:-]+)>.*/, "\\1", "g")
path = (path ? path "/" tag : "/" tag)
}
/<\/[[:alnum:]_:-]+>/ {
if ($0 ~ /<[[:alnum:]_:-]+>[^<]+<\/[[:alnum:]_:-]+>/) {
val = gensub(/.*<[[:alnum:]_:-]+>([^<]+)<\/[[:alnum:]_:-]+>.*/, "\\1", "g")
print path "=" val
}
sub(/\/[^/]+$/, "", path)
}'