Bash-interesting-command-examples
Jump to navigation
Jump to search
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)
}'