Académique Documents
Professionnel Documents
Culture Documents
html
SOMMAIRE
compteur vertical
for i in `seq 1 15`;do echo "$i";done
in.txt
Supprimer un champ
echo "data1 line1" | sed 's/.* //'
echo "data1 line1" | sed -n 's/.* //;p'
resultat: line1
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'
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
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
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
awk 'x[$0]++' in.txt
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
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/"
@4-pattern
pattern1 OR pattern2
sed '/[pattern1pattern2]/!d' in.txt
sed -e '/pattern1/b' -e '/pattern2/b' -e d
in.txt
awk '/pattern1|pattern2/' in.txt
grep -E "pattern1|pattern2" in.txt
grep -e pattern1 -e pattern2 in.txt
NOT pattern1
grep -v 'pattern1' in .txt
awk '!/pattern1/' in.txt
sed -n '/pattern1/!p' 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
sed 's/^./\u&/'
in.txt
@7-Inserer
Inserer une ligne blanche apres chaque ligne sauf apres la ligne 3
sed '3!G' 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
@8-divers
Printer les lignes d'un fichier2 qui ne sont pas dans le fichier1
comm -23 file2.txt file1.txt 2>dev
grep -vxFf file1.txt file2.txt
Printer un fichier
cat in.txt
sed '' in.txt
sed ':' 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
apostrophe et guillemet
echo -n "your name is: "; read name
........... #taper: toto
echo 'hi $name' ........... #resultat : hi
name
echo "hi $name" ........... #resultat : hi
toto
nouveau separateur
IFS=",";echo "moi et moi, lui, les
autres" | (read x y;echo $x) ...........
(->moi et moi)
export
Concatenation
(utiliser un sous shell en tapant: sh + return)
var=debut;echo ${var}ant ...........
---->debutant
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..