En vrac.
renommer les S10rc.xxx en s10rc.xxx : ls S* | grep -v sshd | while read a ;do mv $a $(echo $a |sed "s/^S/s/") ;done
Supprimer les disques d'un vg d'un coup d'un seul ...
# myvg=vg01;mydsk=`lsvg -p $myvg |grep hdisk |awk '{ print $1}'`;reducevg -df $myvg $mydsk
renommer les S10rc.xxx en s10rc.xxx : ls S* | grep -v sshd | while read a ;do mv $a $(echo $a |sed "s/^S/s/") ;done
find . -name ’*.a’ | xargs ls -l + rapide que find . -name ’*.a’ -exec ls -l \ ;
find /d1 /d2 /d3 -name toto.c #cherche dans les trois rep. Le fichier toto.c
find . | xargs grep toto # cherche une occurrence dans x fichiers
find . -ls | sort -nr -k7 | head -20
(logname ; date ; printf "%s\n" "$0 $* ") | xargs >> log
ls $1 | xargs -I mv $1/ $2/
find . -name "user*" -ctime +1 # + vieux que 1 jour
ctime 1 # vieux de 1 jour
ctime -1 # d’aujourd’hui
vi -> :1,$s/notesds/notesdsr/g
kill -9 `ps -fu borland | grep /opt/appserver/cvshelper |nawk ‘ORS=” “ ;print $2’`
Copier une source vers une target avec tar et ssh.
tar cvf - . | ssh root@server1 'cd /opt/cobol;tar xf - '
renommer des fichiers un un bloc.
ls -1 pattern | awk ’print "mv "$1" "$1".new"’ | sh
avec SED ou dans VI, pour changer p.ex des champs qui n’ont pas de guillemets en en ajoutant,
:%s/^I\([^"].*[^"]\)^I/^I"\1"^I/g
les ^I sont à faire avec la touche tab, le copier/coller ne fonctionne pas.
ensuite
l’instruction entre parenthèses génère la var 1 contenant un guillemet +
n’importe quel caractère + un guillemet, et va le remplacer par la même
valeur (1) mais entouré de guillemets …
Planifier une commande avec "at"
echo "shutdown -Fr now" | at -t MMDDhhmm
Lire une man page :
#nroff -man smbd.8 | more
RSYNC
rsync -avn —exclude ’oradata/’ /data/mnt4/ /MIGRATION/data/mnt4/
rsync -av --rsh=/usr/bin/rsh --rsync-path=/usr/local/bin/rsync /home/ server41:/home/
Attention le n est pour simulation ( ne fait rien)
plus la page de man
AWK Manipulations
Afficher les motifs 2,3,4 jusqu'à NF en fonction d'un pattern "monmotif" trouvé
cat troublenim.monmotif |awk '$3 ~ "monmotif" { for (x=3; x<=NF; x++) { printf "%s%c", $x, OFS } print "" }' |sort |uniq
Ajouter le contenu d'un fichier d'un serveur vers un autre serveur
cat /etc/passwd |grep dbadev1 |ssh barolo13 "cat - >> /etc/passwd "
Virer des fichiers impossibles Tu as créé un fichier commençant par un - … mauvaise idée !! Pour le virer tu peux faire rm ./-ton_fichier ou rm — -ton_fichier ou encore ls -i (récupérer l’i-node) et le virer avec find . -inode ton_inode -exec rm \ ;
Passer un argument se trouvant SOUS un autre A COTE de l'autre.
exemple : cat test
toto
tata
titi
tutu
doit devenir
toto tata
titi tutu
cat test|awk 'BEGIN { i=0 } i==0 { VAR=$0 } i==1 { print VAR, $0; i=-1 } { i++ }'
Insérer une ligne vide après un pattern p.ex flag=
cat /etc/security/passwd |awk "/flags/ {print; print "\n"}; !/flags/ {print "$*"}"|uniq
SED
Supprimer une (ou plusieurs) ligne(s) d'un fichier
Supprimer une (ou plusieurs) ligne(s) d'un fichier
Syntaxe
sed '{[/]||[/]}d'
sed '{[/][,][/]d'
- /.../ = délimiteurs
- n = le numéro de ligne
- chaîne = la chaîne contenue dans la ligne
- regex = l'expression régulière correspondant au motif recherché
- adr = l'adresse d'une ligne (numéro ou motif)
- d = delete (effacer)
Exemples
Suppression de la 3ème ligne
sed '3d' mon_fichier.txt
Suppression de la ligne contenant la chaîne "awk"
sed '/awk/d' mon_fichier.txt
Suppression de la dernière ligne
sed '$d' mon_fichier.txt
Suppression de toutes les lignes vides
sed '/^$/d' mon_fichier.txt
sed '/./!d' mon_fichier.txt
Suppression de la ligne "matchée" par une expression régulière
(ici on élimine celle contenant des caractères numérique (au moins 1 chiffre) situés en fin de ligne)
sed '/[0-9/][0-9]*$/d' mon_fichier.txt
Suppression de l'intervalle compris entre les lignes 7 et 9
sed '7,9d' mon_fichier.txt
La même chose mais en remplaçant l'adresse par des "motifs"
sed '/-Début/,/-Fin/d' mon_fichier.txt
Note
Les exemples précédents ne font que modifier l'affichage du fichier (sortie standard 1 = l'écran).
Pour des modifications permanentes, pour les anciennes versions (< 4) utiliser un fichier temporaire, pour GNU
sed utiliser le paramètre "-i[suffixe]" (--in-place[=suffixe]), comme dans l'exemple suivant :
sed -i".bak" '3d' mon_fichier.txt
qui aura pour effet, de ne produire aucun affichage sur la sortie standard, de modifier le fichier original "mon_fichier.txt" en supprimant
la 3ème ligne et de créer un fichier de sauvegarde nommé "mon_fichier.txt.bak".
ajouter à la fin d'une ligne un pattern, cela uniquement sur une ou plusieurs lignes spécifiques :
cat /etc/security/login.cfg | sed "/^ shells/s/$/,\/bin\/sftponly/"
ou pour supprimer des chaines de car. On peut exécuter plusieurs requêtes sed en une seule commande.
sed '/latency/d;/usecs/d;/exiting/d;/total/d' $INFILE
Modifier une occurrence par une autre.
# cat vh0b |grep -v N
hdisk202
hdisk203
hdisk266
hdisk267
hdisk268
# cat vh0b |grep -v N |sed "s/^\(.*\)$/\1 n\1/"
hdisk202 nhdisk202
hdisk203 nhdisk203
hdisk266 nhdisk266
hdisk267 nhdisk267
hdisk268 nhdisk268
Ajouter le motif :/usr/local/man a la ligne commençant par MANPATH (le & indique qu'il faut ajouter le motif)
cat /etc/environment |sed "/^MANPATH/s/.*/&:\/usr\/local\/man/"
Ajouter un "dièse" au début de chaque ligne d'un fichier.
cat wcoll |sed "s/.*/#&/" En remplaçant par &# on met le dièse à la fin
Et pour ajouter un motif devant une ligne ou une sélection de ligne, mettre le motif /ma recherche/ avant le s/