Pb CHROOT command not found

Problème :

/soft/jedox/ps/start_ef_palo.sh: line 26: chroot: command not found

ça fonctionne avec Putty pas avec Vtom.

Explication :

La commande chroot n’est pas trouvée dans /usr/sbin car le PATH utilisé en batch n’est pas bon.

Solution :

Il faut ajouter /usr/sbin dans le PATH de la queue batch VTOM

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/vtom5/admin:/opt/vtom5/abm/bin

vi /opt/vtom5/admin/vtom_init.ksh

[ -z « `echo – $PATH | grep $ABM_BIN` » ] && PATH=${PATH}:/usr/sbin:${ABM_BIN} ; export PATH

Relancer le client Vtom.

PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/sbin:/opt/vtom5/admin:/opt/vtom5/abm/bin

La c’est OK

Relancer l’agent Vtom

 

PASSWD : Changer le mot de passe d’un utilisateur.

Se connecter root

root@home:~# passwd pcr
Entrez le nouveau mot de passe UNIX :
Retapez le nouveau mot de passe UNIX :
passwd : le mot de passe a été mis à jour avec succès

Si le même mot de passe a déjà été utiliser un message d’avertissement nous prévient.

BAD PASSWORD: it is based on a dictionary word

retapez le mot de passe est tout est OK.

Nombre de processeurs et de coeurs

Les infos sont dans /proc/cpuinfo

grep « processor\|cpu cores » /proc/cpuinfo

processor : 0
cpu cores : 4
processor : 1
cpu cores : 4
processor : 2
cpu cores : 4
processor : 3
cpu cores : 4

4 processeurs avec chacun 4 coeurs.

cat /proc/cpuinfo

processor : 15
vendor_id : GenuineIntel
cpu family : 6
model : 26
model name : Intel(R) Xeon(R) CPU X5560 @ 2.80GHz
stepping : 5
cpu MHz : 2800.246
cache size : 8192 KB
physical id : 1
siblings : 8
core id : 11
cpu cores : 4
fpu : yes
fpu_exception : yes
cpuid level : 11
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall nx rdtscp lm pni monitor ds_cpl est tm2 cx16 xtpr popcnt lahf_lm
bogomips : 5600.29
clflush size : 64
cache_alignment : 64
address sizes : 40 bits physical, 48 bits virtual
power management:

Les processeurs sont numérotés à partir de 0. Ici nous avons le détail du processeur N° 15 donc le 16ième.

How many physical processors are there?

$ grep ‘physical id’ /proc/cpuinfo | sort | uniq | wc -l
2

How many virtual processors are there?

$ grep ^processor /proc/cpuinfo | wc -l
4

Are the processors dual-core (or multi-core)?

$ grep ‘cpu cores’ /proc/cpuinfo
cpu cores : 2
cpu cores : 2
cpu cores : 2
cpu cores : 2

« 2 » indicates the two physical processors are dual-core, resulting in 4 virtual processors.

If « 1 » was returned, the two physical processors are single-core. If the processors are single-core, and the number of virtual processors is greater than the number of physical processors, the CPUs are using hyper-threading. Hyper-threading is supported if ht is present in the CPU flags and you are using an SMP kernel.

LESS

Comme dit notre directeur technique “less can more”. Comprendre que la commande less fait tout ce que fait la commande more, en mieux et bien plus. Less vous permet d’afficher un contenu ligne par ligne, page par page et même de chercher dans cet affichage.

Exemples d’usage de less

less toto.txt less toto.txt

Interface Talend SAP-M3

ATTENTION EN CAS DE CHANGEMENT DE VERSION.

Chaque modif doit faire l’objet d’une montée de version dans Talend pour tests et avant mise en Prod.
Ceci afin de preserver la version en Prod.
le script lancé par Vtom est /exploit/scripts/lpz_sap_m3_integration_run_07.sh
il faut le modifier ainsi que :
/exploit/scripts/integration/LPZ_SAP_M3_INTEGRATION_run_07.sh
Les commandes suivantes s’appliquent à la version 0.7 de l’interface.
1) Récupération du Zip sur /home/adminlinux copie et unzip
Se positionner dans /data/talend/jobs rapatrier le .zip
cp /home/adminlinux/LPZ_SAP_M3_INTEGRATION_0.7.zip .
et le dézipper
unzip LPZ_SAP_M3_INTEGRATION_0.7.zip
2) Mise à jour du .sh (ajout des 2 paramètres : context et mode de lancement)
Se positionner dans la directorie où se trouve le .sh
cd /data/talend/jobs/LPZ_SAP_M3_INTEGRATION_0.7/LPZ_SAP_M3_INTEGRATION
Copier le .sh de /exploit/scripts/integration
cp /exploit/scripts/integration/LPZ_SAP_M3_INTEGRATION_run_07.sh .
3) Contenu du repository (exemple Test = SBX902 ou Prod = PFT300)
cd /data/talend/repository/SBX902
En cas d’initialisation mettre les 4 fichiers suivants, dans cette directorie.
MITMAS_REF.xls
TEMPLATEITEM.txt
Xunit.xls
XUNIT.xls
Vider le repository
rm *
Copier les 4 fichiers ci-dessus
cp ../*.xls .
cp ../*.txt .
—————————————————————–
Pour tester
—————————————————————–
Sur Athena LpzXM3/Input
Lancer l’integration « Firstswicht » en mettant en parametre l’avant dernier fichier.
Puis lancer une integration « normale » en mettant en parametre « integration

Chaque modif doit faire l’objet d’une montée de version dans Talend pour tests et avant mise en Prod.

Ceci afin de preserver la version en Prod.

Les commandes suivantes s’appliquent à la version 0.7 de l’interface, mais sont identiques pour toutes montées de version.

1) Récupération du Zip sur /home/adminlinux copie et unzip

Se positionner dans /data/talend/jobs rapatrier le .zip

cp /home/adminlinux/LPZ_SAP_M3_INTEGRATION_0.7.zip .

et le dézipper

unzip LPZ_SAP_M3_INTEGRATION_0.7.zip

2) Le script lancé par Vtom est /exploit/scripts/lpz_sap_m3_run_07.sh

il faut le modifier (changement du chemin)

ainsi que :

/data/talend/repository/LPZ_SAP_M3_INTEGRATION_run_07.sh

(il contient les 2 paramètres : context et mode de lancement)

Se positionner dans la directorie où se trouve le .sh

cd /data/talend/jobs/LPZ_SAP_M3_INTEGRATION_0.7/LPZ_SAP_M3_INTEGRATION

Copier le .sh de /data/talend/repository

cp /data/talend/repository/LPZ_SAP_M3_INTEGRATION_run_07.sh .

3) Contenu du repository (exemple Test = SBX902 ou Prod = PFT300)

cd /data/talend/repository/SBX902

En cas d’initialisation mettre les 4 fichiers suivants, dans cette directorie.

MITMAS_REF.xls

TEMPLATEITEM.txt

Xunit.xls

XUNIT.xls

Vider le repository

rm *

Copier les 4 fichiers ci-dessus depuis le niveau inférieur.

cp ../*.xls .
cp ../*.txt .

—————————————————————–

Pour tester

—————————————————————–

Sur Athena LpzXM3/Input

Lancer l’integration « Firstswicht » en mettant en parametre l’avant dernier fichier.

Puis lancer une integration « normale » en mettant en parametre « integration »

Heure systeme sur un Linux

Ubuntu 18.04 :

sudo apt install ntp

Serveur WCT :
vim /etc/ntp.conf

server timeserver.wabtec.com
restrict timeserver.wabtec.com mask 255.255.255.255 nomodify
notrap noquery
server 10.129.20.20


service ntpd stop
service ntpd start
service ntpd restart

cat /var/log/messages


Sur EL7 (octal_V15)
root@wctsrv0057:~# timedatectl
 Local time: Tue 2019-10-01 15:30:45 CEST
Universal time: Tue 2019-10-01 13:30:45 UTC
RTC time: Tue 2019-10-01 12:24:05
Time zone: Europe/Paris (CEST, +0200)
NTP enabled: yes
NTP synchronized: yes
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2019-03-31 01:59:59 CET
Sun 2019-03-31 03:00:00 CEST
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2019-10-27 02:59:59 CEST
Sun 2019-10-27 02:00:00 CET
root@wctsrv0057:~# timedatectl set-ntp false
root@wctsrv0057:~# timedatectl
Local time: Tue 2019-10-01 15:35:05 CEST
Universal time: Tue 2019-10-01 13:35:05 UTC
RTC time: Tue 2019-10-01 12:28:25
Time zone: Europe/Paris (CEST, +0200)
NTP enabled: no
NTP synchronized: yes
RTC in local TZ: no
DST active: yes
Last DST change: DST began at
Sun 2019-03-31 01:59:59 CET
Sun 2019-03-31 03:00:00 CEST
Next DST change: DST ends (the clock jumps one hour backwards) at
Sun 2019-10-27 02:59:59 CEST
Sun 2019-10-27 02:00:00 CET

root@wctsrv0057:~# systemctl enable ntpd.service


Pour voir la date et l’heure actuelle

date

Pour changer l’heure

date -s « 09:56:00 »

Pour changer le jour

date -s « 2011-03-22 »

Mise à jour automatique de l’heure

Ajouter le service ntp

sous Ubuntu ou Debian
sudo apt-get install ntp

sous Redhat ou centos
yum install ntp

Lancer le service

sudo service ntpd start
ou
sudo service ntpd restart

sudo service ntp start
ou
sudo service ntp restart

ps -ef | grep ntp

vi /etc/ntp.conf

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help

driftfile /var/lib/ntp/ntp.drift
# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/

statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
# You do need to talk to an NTP server or two (or three).
#server ntp.ubuntu.com
#server 10.20.112.64
server pft.ft.grp

# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details. The web page <http://support.ntp.org/bin/view/Support/AccessRestrictions>
# might also be helpful.
#
# Note that « restrict » applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.

# By default, exchange time with everybody, but don’t allow configuration.
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1

# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust
# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255

# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines. Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient

Par défault on a :

/etc/init.d/ntp
/etc/rc1.d/K77ntp
/etc/rc2.d/S23ntp
/etc/rc3.d/S23ntp
/etc/rc4.d/S23ntp
/etc/rc5.d/S23ntp

ln -s ../init.d/ntp /etc/rc1.d/K77ntp
ln -s ../init.d/ntp /etc/rc2.d/S23ntp
ln -s ../init.d/ntp /etc/rc3.d/S23ntp
ln -s ../init.d/ntp /etc/rc4.d/S23ntp
ln -s ../init.d/ntp /etc/rc5.d/S23ntp

grep – awk – sed

SOMMAIRE

1- Numeroter – compter – additionner – cumuler
2- operations sur les champs : NF
3- operations sur les lignes : NR – occurrences
4- pattern
5- Remplacer des lignes des chiffres ou des lettres
6- Supprimer ou inserer des lignes blanches ,espaces ,tabulations
7- Inserer
8- divers

L’execution du script peut dépendre de la version de Linux installée. Parfois le script s’execute dans un « sous shell » (en tapant ‘sh’) (taper ‘exit’ pour sortir)

@1-Numeroter – compter – additionner – cumuler

 

  • Affiche le nombre de lignes (avec les lignes vides)

    sed -n -e ‘$=’ in.txt
    awk ‘END{print NR}’ in.txt
    awk ‘{n++} END{print n}’ in.txt
  • Affiche le nombre de lignes (sans les lignes vides)

    awk ‘/./ {print}’ in.txt | wc -l
    grep « . » in.txt | wc -l
  • Somme avec cumul de la colonne 1

    awk ‘{print (total +=$1)}’ in.txt
  • Print le nombre de mots

    awk ‘{x=x+NF}END{print x}’ in.txt
  • Compte nombre de lignes contenant le pattern ‘titi’

    awk ‘/titi/{x+=1}END{print x}’ in.txt
  • Print le numero de chaque ligne

    awk ‘{print NR,$0}’ in.txt
    c=0; while read line; do ((c+=1)); echo $c $line; done < in.txt
  • compteur vertical

    for i in `seq 1 15`;do echo « $i »;done
  • Compte le nombre de lignes vides d’un fichier

    awk ‘/^$/ {x += 1};END {print x }’ in.txt
  • Compter le nombre de mots d’un fichier

    cat in.txt | wc -w
  • compter le nombre de lignes et de mots

    awk ‘BEGIN{nl=0;nw=0} {nl++;nw+=NF} END {print « lines: »,nl, « words: »,nw}’ in.txt
  • compter un caractere (ici: i)

    var=`cat in.txt` ; var= »${var//[^i]/} » ; echo ${#var}
  • affiche le numero de ligne du pattern

    grep -n « pattern » in.txt
  • Compter le nombre d’occurrences de ‘pattern’

    grep -c « pattern » in.txt
    awk ‘/pattern/ {n++} END {print n}’ in.txt
  • Numeroter toutes les lignes contenant ‘pattern’ (affiche 1 numero par ligne)

    sed -n ‘/pattern/=’ in.txt
  • Numeroter toutes les lignes entre 2 patterns (affiche 1 numero par ligne)

    sed -n ‘/pattern1/,/pattern2/{=;d;}’ in.txt
  • Numeroter les lignes sans les lignes blanches

    nl in.txt
  • Numeroter les lignes avec les lignes blanches

    cat -n in.txt
    sed = in.txt | sed ‘N; s/\n/\t/’
  • Numeroter les lignes

    awk ‘{print NR,$0}’ in.txt
    while read line; do N=$((N+1)); echo « Line $N = $line »; done < in.txt
  • Ecrire le nom du fichier devant chaque ligne

    grep -H « pattern » in.txt
  • Somme et cumul d’une colonne ($2) , en utilisant 1 colonne clef ($1)

    awk ‘{arr[$1]+=$2} END {for(i in arr) {print i, arr[i]}}’ in.txt | sort

     

    @2-Operations sur les champs : NF

  • Compter le nombre de champs de chaque ligne (separateur = « , »)

    awk ‘{cnt=0 ; for(i=1; i<=NF; i++) {if($i != «  ») {cnt++}} {print NR  » : « cnt » fields »}}’ FS= », » in.txt
  • Printer les 5 premiers caractères de toutes les lignes d’un fichier

    while read line;do echo ${line::5};done < in.txt
    while read line ; do echo $line | cut -c1-5 ; done < in.txt
  • Deleter les 5 premiers caracteres de toutes les lignes d’un fichier

    colrm 1 5 < in.txt
    awk ‘sub(« ^….. », «  »)’ in.txt
    while read line ; do echo $line | cut -c6- ; done < in.txt
  • Printer les 5 derniers caracteres de toutes les lignes

    sed ‘s/^.*\(…..\)$/\1/’ in.txt
    sed ‘s/\(.*\)\(.\{5\}\)/\2/’ in.txt
    while read line;do echo ${line: -5};done < in.txt
    awk ‘{print substr($0, length($0) – 4, length($0) ) }’ in.txt
  • Deleter les 5 derniers caracteres de toutes les lignes

    awk ‘sub(« …..$ », «  »)’ in.txt
  • Supprimer un champ

    echo « data1 line1 » | sed ‘s/.* //’
    echo « data1 line1 » | sed -n ‘s/.* //;p’
    resultat: line1
  • Supprimer le dernier champ

    awk ‘{$NF= » »; print $0}’ in.txt
  • Champ tampon ‘elapse’ pour operations intermediaires

    awk ‘{elapse = $1/3600; if(elapse<8) print int($1/3600)}’ in.txt
  • Dans champ 1, a la position 2, printer 3 caracteres

    awk ‘{print substr($1,2,3)}’ in.txt
  • Print l’avant dernier champ ($NF-1) de chaque ligne

    awk ‘{print $(NF-1)}’ in.txt
  • Print le nombre de champs uniquement

    awk ‘{print NF}’ in.txt
  • Print le nombre maximum de champs

    awk ‘{print NF}’ in.txt | sort -n | sed -n ‘$p’
  • Print le nombre minimum de champs

    awk ‘{print NF}’ in.txt | sort -n | sed -n ‘1p’
  • Printer 2 colonnes en precisant le separateur

    awk -F'[ ]’ ‘{print $2,$3}’ in.txt
    cut -d ‘ ‘ -f2,3 in.txt
  • Printer du 5eme caractere au dernier (inclus) sur toutes les lignes d’un fichier

    cat in.txt | cut -c ‘5-‘
  • Printer du 1er au 5eme caractere (inclus) sur toutes les lignes d’un fichier

    cat in.txt | cut -c ‘-5’
  • Printer du 3eme au 5eme caractere (inclus) et du 7eme au 9eme (inclus) sur toutes les lignes d’un fichier

    cat in.txt | cut -c ‘3-5,7-9’
  • Printer les lignes dont le nombre de champs est inferieur a 3

    awk ‘NF<3’ in.txt
  • Printer les lignes n’ayant qu’un seul champ

    awk ‘{if(NF == 1) {print}}’ in.txt
  • tri de la 1ère colonne au 22eme caractere

    sort -k1.22
  • Print si longueur de ‘colonne 1’ >3 « ET » ou « OU » longueur de ‘colonne 2’ <5

    awk ‘length($1)>3 && length($2)awk ‘length($1)>3 || length($2)
  • Condition de print sur la longueur de colonne

    awk ‘{if(length($1)

     

    @3-operations sur les lignes : occurrences – digits – suppression – doubles – printer

  • Occurrences
    Capturer la premiere occurrence d’une serie de lignes ayant meme pattern

    cat in.txt | sort -k1 | awk ‘x !~ $1 ; {x = $1}’
    cat in.txt | sort -k1 | awk ‘!d[$1] {print} {d[$1]=1}’
    cat in.txt | sort -k1 | awk ‘x[$1]++ {next} {print}’
    cat in.txt | sort -k1 | awk ‘!_[$1]++ {print $0 ; next} {next}’
  • Occurrences
    Compter et marquer a la fin de la ligne les occurrences d’un unique pattern

    awk ‘/pattern/ {i=i+1} {print $0,i}’ in.txt | awk ‘!a[NF]++ {print $0 ; next} {sub($NF, » ») ; print}’
  • Occurrences
    Compter les occurrences d’un pattern (total cumule)

    awk ‘/pattern/ {n++} END {print « pattern ecrit » n « fois »}’ in.txt
  • Occurrences
    Compter les occurrences d’un pattern (pour chaque ligne)

    awk -F « pattern » ‘{print NF-1}’ in.txt
  • Occurrences
    Remplace sur chaque ligne la 1ère occurrence de ‘t’ par ‘b’

    sed -e ‘1,$ s/t/b/1’ in.txt
    while read line; do echo ${line/t/b}; done < in.txt
  • Occurrences
    Remplacer la 2ème occurrence d’un pattern de la premiere ligne

    sed ‘0,/old/ s//new/2’ in.txt
  • Occurrences
    Remplacer la 2ème occurrence d’un pattern pour chaque ligne

    sed ‘s/old/new/2’ in.txt
    sed ‘/old/ s//new/2’ in.txt
    awk ‘{print gensub(/old/, « new », 2)}’ in.txt
  • Occurrences
    Print la 1ère occurrence d’un « pattern »

    grep -m1 « pattern » in.txt
    sed -n ‘/pattern/{p;q;}’ in.txt
  • Occurrences
    Printer les lignes dont les elements de la colonne 2 ont plus d’une occurrence

    awk ‘FNR==NR && a[$2]++ {b[$2] ; next} $2 in b’ in.txt in.txt
  • Digits
    Printer les 4 premiers digits de chaque ligne

    cat in.txt | cut -c1-4
    for line in $(cat in.txt); do echo `expr « $line » : ‘\(….\)’`; done
    while read line; do echo `expr « $line » : ‘\(….\)’`; done < in.txt
  • Digits
    Printer les 4 derniers digits de chaque ligne

    awk ‘{print substr($0, length($0)-3, length($0))}’ in.txt
  • Digits
    Deleter les 3 derniers digits de chaque ligne

    sed -n ‘1,$ s/…$//p’ in.txt
  • Digits
    Printer du 5ème digit au dernier de la ligne pour toutes les lignes

    while read line; do echo « substr($line,4) » | m4; done < in.txt
  • Digits
    Printer 6 digits à partir du 2ème digit

    while read line; do echo `expr substr « $line » 2 6`; done < in.txt
  • Suppression de lignes
    Supprime de la ligne 4 a 7 (inclus) du fichier

    sed ‘4,7d’ in.txt
  • Suppression de lignes
    Supprime les lignes contenant ‘toto’

    sed ‘/toto/d’ in.txt
    grep -v « toto » in.txt
  • Suppression de lignes
    Supprime ‘toto’ de la ligne 2 a 6

    sed -e ‘2,6 s/toto//g’ in.txt
  • Suppression de lignes
    Supprime les lignes debutant par un chiffre (1 a 9)

    awk ‘$1 ~ /^[1-9]/ {next} {print}’ in.txt
  • Suppression de lignes
    Supprime la ligne debutant par ‘@’ et les 2 suivantes

    sed ‘/^@/ {N;N;d;}’ in.txt
  • Suppression de lignes
    Supprimer la 1ere ligne , la derniere ligne …

    sed ‘1d’ in.txt ……….. #supprime la premiere ligne
    sed ‘3d’ in.txt ……….. #supprime la ligne 3
    sed ‘$d’ in.txt ……….. #supprime la derniere ligne
  • Suppression de lignes
    Supprimer les lignes 1, 4, 7, 10…..

    sed -e ‘1~3d’ in.txt
  • Suppression de lignes
    Supprimer 1 ligne toutes les 3 lignes

    sed ‘0~3d’ in.txt
    sed ‘n;n;d;’ in.txt
  • Suppression de lignes
    Deleter les 2 dernieres lignes

    sed ‘N;$!P;$!D;$d’ in.txt
  • Suppression de lignes
    Deleter les 10 dernieres lignes

    sed -e :a -e ‘$d;N;2,10ba’ -e ‘P;D’
    sed -n -e :a -e ‘1,10!{P;N;D;};N;ba’
  • Lignes doubles
    Printer les lignes uniques sans les doubles

    sort -u in.txt
    sort in.txt | uniq
    awk ‘!x[$0]++’ in.txt
    awk ‘{ a[$1]++ } END {for (i in a) print i}’ in.txt | sort
    sed ‘$!N; /^\(.*\)\n\1$/!P; D’ in.txt ………consecutive lines
  • Lignes doubles
    Printer les lignes doubles , deleter le reste

    cat in.txt | uniq -d
    sed ‘$!N; s/^\(.*\)\n\1$/\1/; t; D’ in.txt
  • Lignes doubles
    Printer les lignes doubles (ou triples …)

    awk ‘FNR==NR && a[$0]++ {b[$0] ; next} $0 in b’ in.txt in.txt
  • Printer des lignes
    Printer uniquement la ligne 10

    sed ’10q;d’ in.txt
    sed ’10!d’ in.txt
    sed -n ’10p’ in.txt
    awk ‘{f[NR]=$0} END {print f[10]}’ in.txt
    awk ‘NR == 10 {print}’ in.txt
  • Printer des lignes
    Printer de la ligne 1 a 10

    sed 10q in.txt
    awk ‘NR <=10{print}’ in.txt
  • Printer des lignes
    Printer de la ligne 3 a 5

    sed ‘3,5!d’ in.txt
    sed -n ‘3,5p’ in.txt
    awk ‘NR >= 3 && NR <= 5’ in.txt
    head -5 in.txt | tail -3
    sed -n ‘3{:a;N;5!ba;p}’ in.txt
  • Printer des lignes
    Printer la ligne 5 et 10 d’une serie de fichiers

    for i in fichiers*;do awk ‘NR == 5;NR == 10 {print $0}’ $i;done
  • Printer des lignes
    Printer de la ligne 5 a 10 en numerotant

    awk ‘NR == 5,NR == 10 {print NR »  » $0}’ in.txt
  • Printer des lignes
    Printer la 1ere ligne à la place de la 3eme ligne

    sed -n -e ‘1h; 1!p; 3{g;p}’ in.txt
  • Printer des lignes
    Printer la 1ere ligne

    sed q in.txt
  • Printer des lignes
    Printer la dernière ligne

    sed -n ‘$p’ in.txt
    sed ‘$!d’ in.txt
  • Printer des lignes
    Printer les 2 dernieres lignes

    sed ‘$!N;$!D’ in.txt
  • Printer des lignes
    Printer les 10 dernieres lignes

    sed -e :a -e ‘$q;N;11,$D;ba’ in.txt
  • Printer des lignes
    Printer la 1ere et derniere ligne

    head -1 in.txt ; tail -1 in.txt
    sed -n ‘1p ; $p’ in.txt
    awk ‘NR==1 ; END {print}’ in.txt
    sed q in.txt;sed ‘$!d’ in.txt
    sed q in.txt;sed ‘$\!d’ in.txt ……….#selon version de Linux
    IFS=$’\n’;array=($(cat in.txt)); echo ${array[0]};sed ‘$!d’ in.txt ……..#en sous shell
  • Printer des lignes
    Printer les lignes ayant moins de 6 caracteres

    sed ‘/^.\{6,\}/d’ in.txt
  • Printer des lignes
    Printer les lignes de 6 caracteres ou plus

    sed -n ‘/^.\{6\}/p’ in.txt
  • Indexage du premier ‘t’ lu pour chaque ligne

    while read line; do echo `expr index « $line » t`; done < in.txt
  • Longueur de chaque ligne (en nombre de digits) – voir si la version de Linux supporte : ‘ m4 ‘

    while read line; do echo « len($line) » | m4; done < in.txt
    while read line; do echo `expr length « $line »`; done < in.txt
  • Formater sur une meme ligne : une ligne paire a droite d’une ligne impaire

    cat in.txt | sed « N;s/\(.*\)\n\(.*\)/\1 \2/ »
    cat in.txt | sed « N;s/\n/ / »
    cat in.txt | sed ‘$ !N; s/\n/ /’
  • Formater sur une meme ligne : une ligne impaire a droite d’une ligne paire

    cat in.txt | sed « N;s/\(.*\)\n\(.*\)/\2 \1/ »
  • Affiche 1 ligne sur 2 (lignes 1, 3, 5…)

    sed ‘n;d’ in.txt
    sed -n ‘p;n’ in.txt
    sed -n ‘1,${p;n;}’ in.txt
    sed ‘2~2d’ in.txt
    awk ‘FNR % 2’ in.txt
    awk ‘NR%2 {print}’ in.txt
    awk ‘NR%2 == 1’ in.txt
  • Affiche 1 ligne sur 2 (lignes 2, 4, 6…)

    sed -n ‘n;p’ in.txt
    sed -n ‘1,${n;p;}’ in.txt
    sed ‘1~2d’ in.txt
    awk ‘!(FNR % 2)’ in.txt
    awk ‘(NR+1)%2 {print}’ in.txt
    awk ‘NR%2 == 0’ in.txt
  • Affiche 1 ligne sur 5 a partir de la ligne 3

    sed -n ‘3,${p;n;n;n;n;}’ in.txt
  • Recherche de la ligne la plus longue

    awk ‘{ if ( length > L ) { L=length ; s=$0 } } END { print L, »\ » »s »\ » »}’ in.txt

     

    @4-pattern

  • Capture d’un pattern dans 1 fichier

    grep ‘pattern’ in.txt
    grep -w ‘pattern’ in.txt
    awk ‘/pattern/’ in.txt
    awk ‘$0 ~ /\ypattern\y/ {print}’ in.txt
    sed -n ‘/pattern/p’ in.txt
    sed ‘/pattern/ !d’ in.txt
    grep ‘\’ in.txt
  • Printer les lignes ne contenant que des chiffres

    sed -n ‘/^[[:digit:]]*$/p’ in.txt
  • Printer les lignes ne contenant que des lettres

    sed -n ‘/^[[:alpha:]]*$/p’ in.txt
  • Capture d’un pattern dans plusieurs fichiers

    grep « pattern » in*.txt
    for i in in*.txt;do seq=`ls $i`;awk ‘/pattern/ {print seq,$0}’ seq=${seq} $i;done
  • Printer un paragraphe separe par des lignes blanches , contenant un pattern

    sed -e ‘/./{H;$!d;}’ -e ‘x;/pattern/!d;’ in.txt
  • Printer un paragraphe separe par des lignes blanches , contenant pattern1 ‘et’ pattern2

    sed -e ‘/./{H;$!d;}’ -e ‘x;/pattern1/!d;/pattern2/!d’ in.txt
  • Printer un paragraphe separe par des lignes blanches , contenant pattern1 ‘ou’ pattern2

    sed -e ‘/./{H;$!d;}’ -e ‘x;/pattern1/b’ -e ‘/pattern2/b’ -e d in.txt
  • Capturer dans la colonne 1 le pattern ‘2’ et printer la colonne 3

    awk ‘$1 ~ /2/ {print $3}’ in.txt
    awk ‘$1 == « 2 » {print $3}’ in.txt
    awk ‘{if($1 ~ /t/){gsub(/t/, « z »,$1);print $0}}’ in.txt
    awk ‘$1 !~ /2/ {print $3}’ in.txt ……….. #syntaxe inverse
    awk ‘$1 \!~ /2/ {print $3}’ in.txt ………..#syntaxe inverse (selon version Linux)
  • Supprimer les lignes contenant des patterns

    awk ‘$1 !~ /pattern1/ && $2 !~ /pattern2/ ‘ in.txt
    awk ‘$1 ~ /pattern1/ || $2 ~ /pattern2/ {next} {print}’ in.txt
  • Capturer le caractère # à la 4ème position

    egrep ‘^.{3}#’ in.txt
  • Capturer les lignes ayant 4 chiffres ou plus

    grep « [0-9]\{4\} » in.txt
  • Lire plusieurs patterns – (possibilite de lignes doubles)

    awk ‘/pattern1/ {print $0} /pattern2/ {print $0}’ in.txt
    awk ‘FNR==NR && a[$0]=/^t/ || a[$0]=/^d/ {b[$0] ; next} $0 in b’ in.txt in.txt
  • utiliser ‘egrep’ si le pattern a plusieurs lignes

    egrep -a « MIN WORD 2|MIN WORD32 » in.txt
  • ajouter antislash (\) pour le caractère special: |

    egrep « 3 \|DISK|4 \| DISK » in.txt
  • Lire plusieurs patterns – (sans lignes doubles) (ici lignes contenant a ‘ou’ b)

    sed ‘/[ab]/!d’ in.txt
    sed ‘/[ab]/\!d’ in.txt
  • Lire plusieurs patterns – (ici lignes contenant a ‘et’ b)

    sed ‘/a/!d; /b/!d’ in.txt
    sed ‘/a/\!d; /b/\!d’ in.txt
  • Printer les 2 premieres occurrences du pattern

    grep -m2 « tata » in.txt
  • Substitution uniquement pour la 1ere occurrence

    sed ‘0,/tata/ s//zaza/’ in.txt
  • Remplace ‘old’ par ‘new’ uniquement sur les lignes commencant par %%

    sed ‘/^%%/ s/old/new/g’ in.txt
  • Remplace sur chaque ligne du début de la ligne au signe ‘=’ par ‘new’

    sed -e ‘1,$ s/^.*=/new/’ in.txt
  • Supprimer la ligne contenant ‘toto’ entre ‘titi’ et ‘tutu’

    sed -e ‘/titi/,/tutu/ {/toto/d}’ in.txt
  • Capture entre ‘toto’ et ‘tata’ (attention si plusieurs occurrences du pattern)

    sed -n ‘/toto/,/tata/p’ in.txt
    sed -e ‘/toto/,/tata/ !{/./d}’ in.txt
    sed -e ‘/toto/,/tata/ \!{/./d}’ in.txt
    perl -e « while() {print if/toto/…/tata/} » in.txt
    awk « /toto/,/tata/ » in.txt
  • Supprimer entre ‘pattern1’ et ‘pattern2’ (les patterns inclus)

    sed -e ‘/pattern1/,/pattern2/d’ in.txt
  • Substitution entre 2 patterns

    sed ‘/titi/,/tata/ s/toto/zz/g’ in.txt
  • Definir un pattern sur lequel la substitution ne se fera pas

    sed ‘/toto/!s/t/z/g’ in.txt
  • Printer entre ‘titi’ et ‘tutu’

    sed -n ‘/titi/{:a;N;/tutu/!ba;p;}’ in.txt
  • Capture de ‘titi’ a ‘tutu’ de la ligne 3 a 10

    sed -n ‘3,10{/titi/,/tutu/p}’ in.txt
  • Supprimer une ligne contenant un pattern + les 2 lignes suivantes

    sed ‘/pattern/,+2d’ in.txt
  • Supprimer de la ligne 3 a la ligne contenant ‘pattern’

    sed -e ‘3,/pattern/d’ in.txt
  • Printer d’une ligne contenant 1 pattern jusqu’a la fin

    sed -n ‘/pattern/,$p’ in.txt
    sed -n ‘/pattern/,EOF’ in.txt
  • Si le pattern est une variable

    sed -n ‘/’$var’/p’ in.txt
  • Ne pas selectionner les lignes contenant un pattern

    grep -v « pattern » in.txt
    awk ‘!/pattern/’ in.txt
    sed ‘/pattern/d’ in.txt
    sed -n ‘/pattern/!p’ in.txt
    awk ‘$0 ~ /pattern/ {next} {print}’ in.txt
  • A un pattern inserer une ligne

    sed -e ‘/pattern/ i\ligne ecrite avant le pattern’ in.txt ………… (option ‘i’ : avant le pattern)
    sed -e ‘/pattern/ a\ligne ecrite apres le pattern’ in.txt ………… (option ‘a’ : apres le pattern)
  • A un pattern inserer une ligne blanche

    sed -e ‘/pattern/ i\ ‘ in.txt ………… (option ‘i’ : avant le pattern)
    sed -e ‘/pattern/ a\ ‘ in.txt ………… (option ‘a’ : apres le pattern)
  • print le pattern sans distinguer majuscules ou minuscules

    grep -i « pattern » in.txt
  • print 2 lignes après un pattern ( dans la colonne 1 )

    awk ‘/^pattern/ {c=2; next} c–>0’ in.txt
    awk ‘BEGIN {counter=0}; $1== »pattern » {counter=2; next}; counter>0 {counter–; print}’ in.txt
  • print le pattern + 2 lignes après (After)

    grep -A2 « pattern » in.txt
    sed -n ‘/pattern/ {N;N;p;}’ in.txt
  • delete le pattern + 2 lignes après

    sed ‘/pattern/ {N;N;d;}’ in.txt
  • print le pattern + 2 lignes avant (Before)

    grep -B2 « pattern » in.txt
  • selectionner tous les caracteres (sans afficher les lignes blanches)

    grep « . » in.txt
    awk « /./ » in.txt
    sed -n ‘/./ {p;d}’ in.txt
  • combiner motif et ligne

    sed ‘8,/fin/ s/toto/titi/g’ in.txt
    sed ‘/debut/,$ s/toto/titi/g’ in.txt
  • substituer tout un texte entre 2 motifs excluant les motifs

    sed ‘/titi/,/tutu/{/titi/b;/tutu/b;s/.*/SED/;}’ in.txt
  • ne pas printer les lignes contenant ‘tata’

    sed ‘/tata/d’ in.txt
    sed -n ‘/tata/!p’ in.txt
  • Printer les lignes precedant un pattern

    sed -n ‘/tata/{g;1!p;};h’ in.txt
  • Printer les lignes suivant un pattern

    sed -n ‘/tata/{n;p;}’ in.txt
  • Remembering a pattern (‘_’ is delimiter)

    echo « a line1 » | sed ‘s_\([a-z]\)\([ ]\)\([a-z]*\)\([0-9]\)_\1\2\3 \4_’
    (result: a line 1)

     

    @5-Remplacer des lignes des chiffres ou des lettres

  • Exemple d’une suite d’actions entre 2 patterns

    sed -n ‘4,10 {/pattern1/,/pattern2/ {s/^0./y&/;/^$/d;s/m/w/g;p}}’ in.txt
  • Supprimer tous les chiffres en gardant un tiret ‘-‘ a la place

    tr -d 0-9 < in.txt
  • supprimer toutes les lettres en gardant un tiret ‘-‘ a la place

    tr -d [a-zA-Z] < in.txt
  • Conserver les lignes contenant des chiffres

    sed -e ‘/[0-9]/!d’ in.txt
    sed -e ‘/[0-9]/\!d’ in.txt ……….. (selon version Unix)
  • Supprimer les lettres minuscules en fin de ligne

    awk ‘{ sub(« [a-z]*$ », «  »); print }’ in.txt
  • Remplacer les lettres par une operande (ici: +)

    cat in.txt | tr ‘[:alpha:]’ +
  • Remplacer les chiffres par une operande (ici: +)

    cat in.txt | tr ‘[:digit:]’ +
  • Remplacer 1 caractere par un autre

    tr « t » « z » < in.txt
  • Suppression des sauts de lignes

    tr ‘\n’ ‘ ‘ < in.txt
  • Supprimer la répétition de caractères

    echo « boonnjoouuur » | tr -s « onu »
  • Remplace le bloc (‘t’ suivi de 2 caracteres) par zorro en ligne 4

    sed -e ‘4s/t../zorro/g’ in.txt
  • Inserer 1 caractere (1 point=1 caractere)
    ( ici l’insertion de ‘Q’ se fera apres les 2 premiers caractères )

    echo ‘abcdef’ | sed ‘s/^../&Q/’ ……….. #resultat : abQcdef
  • Remplacer en debut de chaine un nombre de points par une lettre

    echo ‘abcdef’ | sed ‘s/^../Q/’ ……….. #resultat : Qcdef
  • Uniquement le 2eme caractere ‘t’ est remplace par ‘z’ en ligne 4

    sed -e ‘4s/t/z/2’ in.txt
    awk ‘NR==4 {print gensub(/t/, »z »,2)}; NR!=4 {print}’ in.txt
  • Remplace ‘t’ par ‘k’ , et ‘o’ par ‘l’

    sed ‘y/to/kl/’ in.txt
  • Effectue le remplacement des lignes 4 a 10 et n’ecrit dans ‘out.txt’ que celles modifiees

    sed -e ‘4,10 s/t/&zorro/gw out.txt’ in.txt
  • Remplacer un pattern (‘titi’ remplace par: ‘titi et tata’)

    sed ‘/titi/ s//& et tata/g’ in.txt
    sed ‘s/titi/titi et tata/g’ in.txt
  • tr : remplacement dans un sous shell (taper: sh)

    a=abcdef; echo $a | tr f g ……….. #resultat : abcdeg
    a=abcdef; echo ${a//f/g} ……….. #resultat : abcdeg
    a=abcdef; echo $a | tr [ac] [xz] ……….. #resultat : xbzdef
  • tr + option -d: effacement (utiliser un sous shell) (taper: sh)

    a=abcdef; echo $a | tr -d f ……….. #resultat : abcde
    a=abcdef; echo ${a//f/} ……….. #resultat : abcde
    a=abcdef; echo $a | tr -d [a-c] ……….. #resultat : def
    a=abcdef; echo ${a//[a-c]/} ……….. #resultat : def
    a=abcdef; echo $a | tr -d [ac] ……….. #resultat : bdef
    a=abcdef; echo ${a//[ac]/} ……….. #resultat : bdef
  • tr + option -c: inverse l’ensemble des caractères a detecter

    echo « acfdeb123 » | tr -c b-d + ……. resultat: +c+d+b++++
  • Remplacer toutes les occurrences d’un caractère ou d’un pattern pour chaque ligne

    var= »newpattern » ; awk ‘{gsub( /oldpattern/, « ‘ »$var »‘ » )};1’ in.txt
    var= »newpattern » ; awk -v v= »$var » ‘{gsub( /oldpattern/, v )}1’ in.txt
  • Remplacer la 2eme occurrence d’un caractère ou d’un pattern pour chaque ligne

    awk ‘{print gensub(/old/, « new », 2) }’ in.txt
  • Remplacer ‘o’ par ‘zorro’ sauf pour le pattern ‘toto’ ,

    sed -e ‘/toto/!s/o/zorro/’ in.txt
  • Supprimer les 3 derniers caractères de la dernière ligne uniquement

    expr « $(cat in.txt) » : « \(.*\)…$ »
  • Supprimer les 3 derniers caractères de chaque ligne

    awk ‘sub( « …$ », «  » )’ in.txt
  • Printer les 5 premiers caractères de la premiere ligne

    echo `cat in.txt`| cut -c1-5
    echo `expr « $(cat in.txt) » : ‘\(…..\)’`
  • Printer les 5 premiers caractères de toutes les lignes d’un fichier

    cat in.txt | cut -c1-5
    while read line;do echo ${line::5};done < in.txt
    while read line ; do echo $line | cut -c1-5 ; done < in.txt
  • Printer les 5 derniers caracteres de toutes les lignes d’un fichier

    while read line;do echo ${line: -5};done < in.txt
    sed ‘s/^.*\(…..\)$/\1/’ in.txt
    sed ‘s/\(.*\)\(.\{5\}\)/\2/’ in.txt
  • Substituer toto ou titi par tata

    sed ‘s/toto\|titi/tata/g’ in.txt

     

    @6-Supprimer des lignes blanches ,espaces ,tabulations

  • Supprimer les lignes blanches (l’option ‘-i’ reecrit directement dans le fichier)

    sed ‘/./!d’ in.txt
    sed -i ‘/^$/d’ in.txt ……….. (l’option ‘-i’ est a manier avec precaution)
  • Supprimer les lignes blanches repetees sauf la 1ere

    cat -s in.txt
  • Supprimer uniquement les lignes blanches du debut du fichier

    sed ‘/./,$!d’ in.txt
  • Supprimer tout ce qui suit la 1ere ligne blanche

    sed ‘/^$/q’ in.txt
  • Supprimer tout ce qui precede la 1ere ligne blanche

    sed ‘1,/^$/d’ in.txt
  • Supprimer les lignes blanches entre ‘tata’ et ‘route’

    sed -e ‘/tata/,/route/ {/^$/d}’ in.txt
  • Remplacer 2 blancs (ou +) par 1 seul blanc

    sed ‘s/\ \ */\ /g’ in.txt
  • Suppression des espaces et tabulations en debut et fin de ligne

    sed ‘s/^[ \t]*//;s/[ \t]*$//’ in.txt
  • Suppression des lignes vides

    grep -v ‘^$’ in.txt
    grep ‘.’ in.txt
    sed -n ‘/^$/!p’ in.txt
    awk NF in.txt
    awk ‘/./’ in.txt
    sed ‘/^$/d’ in.txt
    sed ‘/./!d’ in.txt
    awk ‘/^$/ {next} {print}’ in.txt
  • tr + option squeeze-repeats: efface tout sauf la première
    occurence d’une chaîne de caractères
    (utile pour supprimer plusieurs espaces blancs)

    echo « XXXXX » | tr –squeeze-repeats ‘X’ ……. resultat: X
  • Supprime tous les espaces au début de toutes les lignes

    sed ‘s/^ *//g’ in.txt
  • Supprime tous les espaces à la fin de toutes les lignes

    sed ‘s/ *$//g’ in.txt
  • Supprimer seulement la première ligne de chaque ensemble de lignes vides consecutives

    sed ‘/[0-9A-Za-z]/,/^$/{/^$/d}’ in.txt
  • to join lines ( en deletant les lignes blanches )

    sed -e ‘/./!d’ -e ‘$!N;s/\n/ /’ in.txt
    sed -e ‘/./\!d’ -e ‘$\!N;s/\n/ /’ in.txt
    grep « . » in.txt | sed ‘$\!N;s/\n/ /’
  • to join lines ( en gardant les lignes blanches )

    sed -e ‘/./!b’ -e ‘$!N;s/\n/ /’ in.txt
    sed -e ‘/./\!b’ -e ‘$\!N;s/\n/ /’ in.txt
    grep « . » in.txt | sed ‘$\!N;s/\n/ /’ | sed G

     

    @7-Inserer

  • Inserer une ligne blanche apres chaque ligne

    sed G in.txt
    sed ‘a\ ‘ in.txt
  • Inserer une ligne de tirets toutes les 2 lignes

    sed ‘n;a\———-‘ in.txt
  • Inserer une ligne blanche toutes les 3 lignes

    sed ‘n;n;G;’ in.txt
  • Inserer une ligne blanche apres chaque ligne sauf apres la ligne 3

    sed ‘3!G’ in.txt
  • Inserer une ligne au debut, à la 3eme ligne et à la fin du fichier

    sed -e ‘1i \debut\ du\ traitement’ in.txt
    sed -e ‘3i \ajout\ a\ la\ 3eme\ ligne’ in.txt
    awk ‘NR == 3 {print « line3 »}1’ in.txt
    sed -e ‘$a \fin\ du\ traitement’ in.txt
  • Inserer une ligne à un pattern

    sed -e ‘/pattern/ i\ligne ecrite avant le pattern’ in.txt ………… (option ‘i’ : avant le pattern)
    sed -e ‘/pattern/ a\ligne ecrite apres le pattern’ in.txt ………… (option ‘a’ : apres le pattern)
  • Inserer une ligne blanche à un pattern

    sed -e ‘/pattern/ i\ ‘ in.txt ………… (option ‘i’ : avant le pattern)
    sed -e ‘/pattern/ a\ ‘ in.txt ………… (option ‘a’ : apres le pattern)
  • Changer la ligne si elle contient un pattern

    sed -e ‘/pattern/ c\new line’ in.txt
  • Inserer **DELETED** et supprimer les lignes entre 2 patterns

    sed ‘/pattern1/,/pattern2/ c\**DELETED**’ in.txt
  • Inserer la ligne ‘line before’ avant chaque ligne du fichier

    sed -e ‘i\line before’ in.txt
  • Inserer du texte avant une ligne matchée par un pattern

    sed -e ‘/pattern/ i\line before pattern’ in.txt
  • Inserer une ligne blanche avant une ligne matchée par un pattern

    sed ‘/tata/{x;p;x}’ in.txt
    sed -e ‘/pattern/ i\ ‘ in.txt
  • Inserer une ligne blanche après une ligne matchée par un pattern

    sed ‘/tata/G’ in.txt
    sed -e ‘/pattern/ a\ ‘ in.txt
  • Inserer une ligne blanche avant et apres une ligne matchee par un pattern

    sed ‘/tata/{x;p;x;G}’ in.txt
  • Inserer un fichier ‘temp.txt’

    sed ‘1r temp.txt’ < in.txt ……….après la 1ère ligne de ‘in.txt’
    sed ‘/pattern/ r temp.txt’ < in.txt ………apres le pattern
  • Inserer un ‘blanc’ devant toutes les lignes

    sed -e ‘s/^./ &/g’ in.txt
    sed ‘{s_^_ _}’ in.txt
  • Inserer un ‘blanc’ à toutes les fins de lignes

    sed -e ‘s/.$/& /g’ in.txt
  • Inserer un ‘blanc’ apres tous les ‘t’ (a droite) en ligne 4

    sed -e ‘4s/t/& /g’ in.txt
    sed -e ‘4\!s/t/& /g’ in.txt ……….. #syntaxe inverse
  • Inserer au 5ème caractère après 3 caractères le signe # sur la ligne 2

    sed -r « 2 ~ s/^(.{4})(.{3})/\2#/ » in.txt

     

    @8-divers

  • Printer un fichier

    cat in.txt
    sed  » in.txt
    sed ‘:’ in.txt
  • Dupliquer toutes les lignes

    sed ‘p’ in.txt
  • printer 3 fois chaque ligne

    sed ‘{h;p;p}’ in.txt
    while read line;do for i in `seq 1 3`;do echo $line;done;done < in.txt
  • Inverser l’ordre d’un fichier

    tac in.txt
    sed -n ‘1!G;h;$p’ in.txt
    awk ‘{ a[i++]=$0 } END { for (j=i-1; j>=0; ) print a[j–] }’ in.txt
  • Ecrire 1 mot par ligne (pour 5 mots: -n5)

    cat in.txt | xargs -n1
    awk ‘{i=1; while (i<=NF){print $i,  » « ;i++}}’ in.txt
  • Ecrire un caractère par ligne

    while read line; do echo -n « $line » | dd cbs=1 conv=unblock 2>/dev/null; done < in.txt
  • Ecrire un fichier sur une ligne

    sed ‘{:a;$!N;s_\n_ _;ta}’ in.txt
  • Joindre les lignes paires a la suite des lignes impaires

    sed ‘$!N; s/\n/ /g’ in.txt
  • Transforme les lignes en colonnes

    awk ‘{printf « ligne%d: %s « ,NR,$0> »z-cible »}’ z-source
  • Ajouter en prefixe le nombre d’occurences des mots et trier

    cat in.txt | xargs -n1 | sort | uniq -c | sort -nr
  • Print les 10 premiers (ou derniers) caracteres d’un fichier

    head -10c in.txt ……….. #les 10 premiers
    tail -10c in.txt ……….. #les 10 derniers
  • Decoupe en n caracteres le fichier ‘in.txt’ (ici n=10)
    creation de fichiers: prefixe_outaa (outab..outac…)

    split -b 10 in.txt prefixe_out
  • Decoupe en n lignes le fichier ‘in.txt’ (ici n=5)

    creation de fichiers: prefixe_outaa (outab..outac…)
    split -l 5 in.txt prefix_out
    awk ‘{print >(« prefix_out » int((NR+4)/5))}’ in.txt
  • Trier un fichier

    dans un ordre numerique (-n); avec separateur (-t); colonne (-k); et place du caractere (.)
    cat in.txt | sort -n -t »  » -k2.4
    dans un ordre decroissant (-r) et en retirant les doubles (-u) :
    cat in.txt | sort -r -u
  • Copier un fichier

    cp old_file new_file
    sed ‘w new_file’ old_file
  • Definir un marqueur en fin de ligne (ici ,) qui joindra la ligne suivante

    sed ‘/\,$/ {N; s_\,\n_ _}’ in.txt
    sed -e :a -e ‘/\,$/N; s_\,\n_ _; ta’ in.txt
  • Si 1 ligne se termine par ‘,’ joindre la suivante a elle

    sed -e :a -e ‘/,$/N ; s#\n## ; ta’ in.txt
  • Si 1 ligne commence par un signe egale ‘=’ , l’ajouter a la ligne precedente et remplacer le signe egale ‘=’ par un espace

    sed -e :a -e ‘$!N;s/\n=/ /;ta’ -e ‘P;D’ in.txt
  • « Dispach » (inverse du « regroupe »)
    split en couples: [‘colonne 1’-‘parties[k]’]
    en ‘k’ fois nombre de lignes

    awk ‘{key=$1;$1= » »;n=split($0, parties, « [,] »);for(k=1; k0) print $0}’ | awk ‘{if($1 != key){key = $1} else {$2 += cum} cum=$2; print}’ > out.txt
  • « Regroupe » (inverse du « dispach »)
    (tous les elements semblables de la colonne 1
    sont regroupes sur 1 seule ligne)

    awk ‘{key=$1; $1=$2= » »;f[key]=f[key] s[key] $0;s[key]= », »} END {for(key in f){gsub(/[[:space:]]/, » »,f[key]);printf « %s %s\n »,key,f[key]}}’ in.txt| sort > out.txt
  • Encadre le premier nombre de la ligne avec des ** , ne printer que ces lignes

    sed -n « s/\([0-9][0-9]*\)/**\1**/p » in.txt
  • Printer les lignes avec 3 digits consecutifs

    sed -n ‘/[0-9]\{3\}/p’ in.txt
  • Inserer un espace entre chaque lettre

    echo -e « bonjour »|sed ‘s/./& /g’ …………….resultat: b o n j o u r
    echo -e « bonjour »|sed -r ‘s/([^ ])/\1 /g’
    echo -e « bonjour »|sed ‘s/\([^ ]\)/\1 /g’
  • Mettre en majuscule la 1ère lettre d’une phrase

    echo -e « texte ligne1\ntexte ligne2 » | sed ‘s/^./\u&/’
  • dirname …………(en sous shell)

    var= »/home/Bureau/1/in.txt » ……. (en sous shell)
  • dirname $var ……….. —-> /home/Bureau/1

    echo ${var%/*} ……….. —-> /home/Bureau/1
  • basename ……. (en sous shell)

    basename $var ……….. —-> in.txt
    echo ${var##*/} ……….. —-> in.txt
  • while dans un sous shell (taper: sh)

    while read line; do echo -en « $line\n »; done < in.txt
    while read line; do echo -e $line; done < in.txt
  • ‘set’ decoupe 1 variable en parametres positionnels dans un sous shell (taper: sh)

    string= »a b:c def:g »; IFS=’:’; set $string; echo « $1 »
  • read …$REPLY : equivalent de : head -1

    read -r
  • Contenu des dossiers sans les sous dossiers

    for fichier in *;do ls -al ;done
  • Contenu des dossiers avec les sous dossiers

    for fichier in *;do ls -al « $fichier »;done
  • nombre de fichiers dans le repertoire courant (equivaut a: ls|wc -l)

    a=0;for i in *;do a=$(($a+1));done;echo nb=$a
  • apostrophe et guillemet

    echo -n « your name is: « ; read name ……….. #taper: toto
    echo ‘hi $name’ ……….. #resultat : hi name
    echo « hi $name » ……….. #resultat : hi toto
  • par defaut, le separateur est ‘blanc’
    [Utiliser les parentheses () pour le sous shell]

    echo « moi et moi, lui, les autres » | (read x y ;echo $y) ……….. (->lui les autres)
  • nouveau separateur

    IFS= », »;echo « moi et moi, lui, les autres » | (read x y;echo $x) ……….. (->moi et moi)
  • liste des variables d’environnement

    export
  • detruire la valeur d’une variable
    (utiliser un sous shell en tapant: sh + return)

    var=7 echo $var ……….. -> 7
    unset var ……….. -> nothing
  • Concatenation
    (utiliser un sous shell en tapant: sh + return)

    var=debut;echo ${var}ant ……….. —->debutant
  • Commande ‘set’ et ‘shift’
    (utiliser un sous shell en tapant: sh + return)

    c= »prof eleve classe note »;set $c;echo $1 $2
    ……….. —>prof eleve
    c= »prof eleve classe note »;shift;echo $1 $2
    ……….. —>eleve classe

 

 

  • Commande ‘eval’
    (utiliser un sous shell en tapant: sh + return)

    message= »date d’aujourd’hui? »;set $message;echo $# …….#resultat: 2
    message= »date d’aujourd’hui? »;set $message;echo $1 …….#resultat: date
    message= »date d’aujourd’hui? »;set $message;eval $1 …….#resultat: dim 20 jan..
     

GREP

c’est un outil sympa qui permet de filtrer. Soit on lui demande ce que l’on veut voir, soit on lui demande d’enlever ce que l’on ne veut pas voir.

Exemple d’usages de grep

Si je tape : grep titi toto.txt, il va m’afficher les occurrences du mot titi dans le contenu du fichier toto.txt

si je fais grep -r titi toto.txt, il m’affichera tout ce qui ne contient pas titi dans le fichier toto.txt.

Grep travail ligne à ligne ce qui permet de faire disparaitre toutes les lignes qui comporterait titi et d’afficher toutes les autres. Bien sûr on peut chainer les grep :

cat toto.txt | grep titi | grep -v tata | grep -v tutu

Cette commande affichera toutes les lignes de toto.txt qui contienne titi mais pas tata ou tutu. Si on ajoute le switch -r ca devient une commande récursive (qui ira dans les sous directory), par exemple : grep -r tutu *.txt cherchera dans tous les fichiers .txt de tous les sous répertoires l’expression tutu. On peut aussi utiliser -i pour qu’il ne soit pas sensible à la casse (majuscule/minuscule) et qu’il considère que TUTU et Tutu sont les mêmes choses.

Galaxy S2 Effectuer un hard reset

Etape 1. Faire une sauvegarde avec Kies.

Etape 2. Maintenir le bouton power de votre Galaxy S3 puis appuyer sur « Eteindre » puis confirmez. Le téléphone s’éteint avec normalement une vibration et le téléphone complètement éteint.

Etape 3. Pressez maintenant Volume Haut + bouton home + bouton power. Un menu apparait.

Etape 4. Choisissez « wype data/factory reset » et confirmez en descendant avec le bouton volume bas en selectionnant « Yes -delete all user data » et en confirmant avec le bouton power.

Etape 5. Après quelques secondes, un nouveau menu fait son apparition. Avec le bouton volume bas, allez jusqu’à « reboot system now » et validez avec le bouton Power.

Etape 6. Faire une Restauration avec Kies.

Etape 7. Se connecter à Google Play avec le compte oger.male@gmail.com

Menu / Mes applications : pour restaurer les applications

free – La mémoire disponible

La commande free permet d’afficher l’état de la mémoire
(utiliser-g ou -m pour afficher les résultats en giga ou megaoctects).

xxx@yyy:~$ free -m

total used free shared buffers cached Mem:
2508 1392 1116 0 153 710

-/+ buffers/cache: 528 1980 Swap: 11998 0 11998

Shared – indique la mémoire partagée entre processus.
Buffers – la mémoire allouée au systèmes d’entrée/sortie.

Cached – la mémoire actuellement utilisé pour faire du cache.
+/- buffers/cache – indique la quantité de mémoire réellement utilisée pour les buffers et caches.

Juste une note pour signaler que [-/+ buffers/cache].free = mem.free + mem.shared + mem.buffer + mem.cached.

Démarrage automatique de service au boot d’un serveur Linux.

Linux boot :

Il existe plusieurs niveau de boot.

rc0.d Arrêt du serveur linux

rc1.d Débug mode console

rc2.d Débug mode console

à rc3.d Mode console

rc4.d Débug mode graphique

à rc5.d Mode graphique

rc6.d Reboot du serveur linux

runlevel pour connaitre le niveau de démarrage.

exemple : N 3 =====>rc3

N 2 3 =========> dabort le rc2 puis le rc3

vi /etc/inittab pour modifier le niveau de démarrage

# The default runlevel is defined here
id:3:initdefault:

On positionne les « services » à démarrer sur les rc3.d et rc5.d.

Les fichiers de commandes sont dans /etc/init.d pour pouvoir être appelés dans les différents rcX.d

Les chaines d’exécution sont dans les directories /etc/rcX.d

Il existe deux types de commandes K (kill) et S (Start)

Les commandes sont numérotées (chronologiquement) de 00 à 99.

K01xxx

K02yyy

K03zzz

….

S01xxx

S02yyy

S03zzz (par exemple)

Les commandes S99zzzzz sont des liens symboliques qui pointent sur des fichiers de commandes ou exécutables.

exemple

Le lien S99vtom.sh pointe sur /etc/rc.d/init.d/boot_start_vtom.sh

Le fichier boot_start_vtom.sh contient la commande à executer.

Création d’un lien symbolique :

Syntaxe : ln -s nom_du_fichier nom_du_lien

pour le supprimer : rm nom_du_lien

Démarrage : (client, moteur et serveur Vtom)

root@tic:/etc/rc5.d# ln -s ../init.d/boot_start_vtserver S99boot_start_vtserver

root@tic:/etc/rc5.d# cd ../init.d

root@tic:/etc/init.d# vi boot_start_vtserver

ajouter la ligne de commande

su -l vtom -c /opt/vtom/admin/boot_start_servers

su -l vtom -c /opt/vtom/admin/start_moteurs

su -l vtom -c /opt/vtom/admin/boot_start_client

root@tic:/etc/init.d# chmod 755 boot_start_vtserver

root@tic:/etc/rc5.d# cd ../rc3.d

root@tic:/etc/rc3.d# ln -s ../init.d/boot_start_vtserver S99boot_start_vtserver

Arrêt : (client, moteur et serveur Vtom)

root@tic:/etc/rc5.d# ln -s ../init.d/stop_vtserver K99stop_vtserver

root@tic:/etc/rc5.d# cd ../init.d

root@tic:/etc/init.d# vi stop_vtserver

ajouter la ligne de commande

su -l vtom -c /opt/vtom/admin/stop_servers

su -l vtom -c /opt/vtom/admin/stop_moteurs

su -l vtom -c /opt/vtom/admin/stop_client

root@tic:/etc/init.d# chmod 755 stop_vtserver

root@tic:/etc/rc5.d# cd ../rc3.d

root@tic:/etc/rc3.d# ln -s ../init.d/stop_vtserver K99stop_vtserver

Mémo pour start auto de VTOM :

cd /etc/rc.d/init.d

vi boot_start_vtom.sh

su -l vtom -c /opt/vtom53/admin/boot_start_client

vi boot_stop_vtom.sh

su -l vtom -c /opt/vtom53/admin/stop_client

cd /etc/rc3.d

ln -s ../init.d/boot_stop_vtom.sh K99boot_stop_client

ln -s ../init.d/boot_start_vtom.sh S99boot_start_client

cd /etc/rc5.d

ln -s ../init.d/boot_stop_vtom.sh K99boot_stop_client

ln -s ../init.d/boot_start_vtom.sh S99boot_start_client

Il faut tester :

[root@pdtb2 rc3.d]# ./K99boot_stop_client
Le client Visual TOM est arrete.
[root@pdtb2 rc3.d]# ./S99boot_start_client
Le client Visual TOM est actif sur pdtb2.

copy par scp

Ou pour envoyer les fichiers du répertoire local psionic, vers le répertoire tmp qui est dans /home/mlx de la machine M1.foo.org :

scp fichier_ou_dossier_local user@machine_distante:dossier_distant
scp ~/psionic/* mlx@foo.org:/home/mlx/tmp
Ou pour rapatrier un fichier(dossier) distant en local
scp vtom@vsch2:/home/vtom/test.txt /home/vtom/

mettre scp -r pour récursive

Conserver les X derniers fichiers d’un dossier

#!/bin/bash
echo On garde les 10 dernieres sauvegardes de Bases
echo «  »
cd $TOM_BACKUP
echo Liste des fichiers effacées
ls -tp | grep « Save » | awk ‘{ if (NR > 10 ) print; }’
rm `ls -tp | grep « Save » | awk ‘{ if (NR > 10 ) print; }’`
df -h /

#!/bin/bash

echo On garde les 10 dernieres sauvegardes de Bases

echo «  »

cd /home/vtom/backup

echo Liste des fichiers qui seront effacés

# exemple : On ne traite que les fichiers qui contiennent « Save »

ls -tp | grep « Save » | awk ‘{ if (NR > 10 ) print; }’

rm `ls -tp | grep « Save » | awk ‘{ if (NR > 10 ) print; }’`

Compatibilité 64 bits vs 32 bits

Sur Vldtb19x, PDTB21

yum install glibc.i686

PJASP1 Client Ubuntu 64.

L’execution des commandes vtom ne fonctionne pas :

./vtping

-bash: ./tva: No such file or directory

-bash: ./vtping: No such file or directory

Il faut installer le pack de compatibilité

apt-get install ia32-libs

En cas de pb on peut essayer d’installer les pack suivants :
apt-get install lib32bz2-1.0

apt-get install lib32z1

apt-get install lib32ncurses5

Sous Redhat (pdtb6)

Si pb sur Redhat ou Oracle Linux Server

yum install ld-linux.so.2

rpm -qa | grep redhat-lsb

yum install redhat-lsb.i686

problème :
bad ELF interpreter: No such file or directory

solution, installer le pack de compatibilité 64 / 32
yum install glibc.i686