Taking the mystery out of the "tar" command: Create, extract and compress archives easily | Bash #8
Cuprins:
Destul de des atunci când lucrați cu fișiere text, va trebui să găsiți și să înlocuiți șiruri de text într-unul sau mai multe fișiere.
sed
este un lucru foarte important. Poate efectua manipularea textului de bază pe fișiere și fluxuri de intrare, cum ar fi conducte. Cu
sed
puteți căuta, găsi și înlocui, insera și șterge cuvinte și linii. Acceptă expresii regulate de bază și extinse care vă permit să potriviți tipare complexe.
, vom vorbi despre cum puteți găsi și înlocui șirurile cu
sed
. Vă vom arăta, de asemenea, cum să efectuați o căutare recursivă și să o înlocuiți.
Găsiți și înlocuiți șirul cu
sed
Există mai multe versiuni de
sed
, cu unele diferențe funcționale între ele. macOS folosește versiunea BSD și majoritatea distribuțiilor Linux vin cu GNU
sed
preinstalate implicit. Vom folosi versiunea GNU.
Forma generală de căutare și înlocuire a textului folosind
sed
are următoarea formă:
sed -i 's/SEARCH_REGEX/REPLACEMENT/g' INPUTFILE
-
-i- În mod implicitsedîși scrie ieșirea la ieșirea standard. Această opțiune spunesedsă editeze fișierele în loc. Dacă este furnizată o extensie (ex-i.bak), se va crea o copie de rezervă a fișierului original.s- Comanda înlocuitoare, probabil cea mai folosită comandă în sed./ / /- Caracter delimitator. Poate fi orice caracter, dar de obicei se folosește caracterul slash (/).SEARCH_REGEX- Șir normal sau expresie obișnuită de căutat.REPLACEMENT- șirul de înlocuire.g- Steagul global de înlocuire. În mod implicit,sedcitește fișierul rând cu linie și schimbă doar prima apariție aSEARCH_REGEXpe o linie. Când este furnizat steagul de înlocuire, toate evenimentele vor fi înlocuite.INPUTFILE- numele fișierului pe care doriți să rulați comanda.
Este o practică bună să puneți ghilimele în jurul argumentului, astfel încât meta-caracterele shell să nu se extindă.
Să vedem exemple despre modul de utilizare a comenzii
sed
pentru a căuta și înlocui text în fișiere cu unele dintre cele mai utilizate opțiuni și steaguri.
În scop demonstrativ, vom folosi următorul fișier:
fisier.txt
123 Foo foo foo foo /bin/bash Ubuntu foobar 456
sed -i 's/foo/linux/' file.txt
123 Foo linux foo linux /bin/bash Ubuntu foobar 456
Cu steagul global de înlocuire,
sed
înlocuiește toate aparițiile modelului de căutare:
sed -i 's/foo/linux/g' file.txt
123 Foo linux linux linux /bin/bash Ubuntu linuxbar 456
După cum ați observat, în exemplul precedent se înlocuiește și subcentrul
foo
din șirul
foobar
. Dacă acesta nu este comportamentul dorit, utilizați expresia cuvânt-delimitare (
\b
) la ambele capete ale șirului de căutare. Aceasta asigură că nu se potrivesc cuvintele parțiale.
sed -i 's/\bfoo\b/linux/g' file.txt
123 Foo linux linux linux /bin/bash Ubuntu foobar 456
Pentru a face sensibilă a cazului de potrivire a modelului, folosiți steagul
I
În exemplul de mai jos folosim atât steagurile
g
și
I
:
sed -i 's/foo/linux/gI' file.txt
123 linux linux linux linux /bin/bash Ubuntu linuxbar 456
sed -i 's/\/bin\/bash/\/usr\/bin\/zsh/g' file.txt
Opțiunea mai ușoară și mult mai ușor de citit este să folosești un alt caracter delimitator. Majoritatea oamenilor folosesc bara verticală (
|
) sau colon (:), dar puteți utiliza orice alt caracter:
sed -i 's|/bin/bash|/usr/bin/zsh|g' file.txt
123 Foo foo foo foo /usr/bin/zsh Ubuntu foobar 456
Puteți utiliza, de asemenea, expresii obișnuite. De exemplu, pentru a căuta în toate numerele de 3 cifre și a le înlocui cu
number
șir pe care l-ați folosi:
sed -i 's/\b\{3}\b/number/g' file.txt
number Foo foo foo foo /bin/bash demo foobar number
O altă caracteristică utilă a sed este că puteți utiliza caracterul ampersand
&
care corespunde modelului potrivit. Personajul poate fi folosit de mai multe ori.
De exemplu, dacă doriți să adăugați bretele ondulate
{}
jurul fiecărui număr de 3 cifre, tastați:
sed -i 's/\b\{3}\b/{&}/g' file.txt
{123} Foo foo foo foo /bin/bash demo foobar {456}
Nu în ultimul rând, este întotdeauna o idee bună să faceți o copie de rezervă atunci când editați un fișier cu
sed
. Pentru a face asta, trebuie doar să oferiți o extensie la opțiunea
-i
. De exemplu, pentru a edita fișierul.txt și a salva fișierul original ca
file.txt.bak
ați utiliza:
sed -i.bak 's/foo/linux/g' file.txt
ls
Găsiți și înlocuiți recursiv
Uneori doriți să căutați în mod recursiv directoare pentru fișierele care conțin un șir și să înlocuiți șirul în toate fișierele. Acest lucru se poate face folosind comenzi precum
find
sau
grep
pentru a găsi recursiv fișierele din director și canalizarea numelor de fișiere pentru
sed
.
Următoarea comandă va căuta recursiv fișierele din directorul de lucru curent și va trece numele fișierelor în
sed
.
find. -type f -exec sed -i 's/foo/bar/g' {} +
Pentru a evita problemele cu fișierele care conțin spațiu în numele lor, folosiți opțiunea
-print0
care spune că
find
să imprimați numele fișierului, urmată de un caracter nul și
-print0
ieșirea la
sed
folosind
xargs -0
:
find. -type f -print0 | xargs -0 sed -i 's/foo/bar/g'
Pentru a exclude un director, utilizați opțiunea
-not -path
. De exemplu, dacă înlocuiți un șir din repertoriul local git pentru a exclude toate fișierele care încep cu punct (
.
), Utilizați:
find. -type f -not -path '*/\.*' -print0 | xargs -0 sed -i 's/foo/bar/g'
find. -type f -name "*.md" -print0 | xargs -0 sed -i 's/foo/bar/g'
O altă opțiune este să utilizați comanda
grep
pentru a găsi recursiv toate fișierele care conțin modelul de căutare și apoi să
sed
numele fișierelor pentru a
sed
:
grep -rlZ 'foo'. | xargs -0 sed -i.bak 's/foo/bar/g'
Concluzie
Deși poate părea complicat și complex, la început căutarea și înlocuirea textului în fișiere cu
sed
este foarte simplă.
Pentru a afla mai multe despre comenzile
sed
, opțiunea și steagurile, accesați manualul GNU sed și tutorialul Grymoire sed. Dacă aveți întrebări sau feedback, nu ezitați să lăsați un comentariu.
Când deschideți orice folder în Windows 10/8/7, Explorer de fișiere va afișa de obicei următoarele detalii despre obiecte - nume, modificare dată, Etc. Dacă doriți, puteți afișa informații suplimentare sau detalii despre obiecte, fie că sunt fișiere de document, fișiere imagine, fișiere video sau directoare.
Să vedem cum putem alege detaliile folderului pentru afișare și afișare informații suplimentare în coloanele Windows File Explorer
Să presupunem că aveți un fișier de 100 .mp4, 150 de fișiere .mkv, 200 de imagini .png și alte fișiere .txt și .docx într-un singur folder. Acum, doriți să le organizați în funcție de formatele de fișiere. De exemplu, doriți să creați un folder separat pentru videoclipuri, imagini și documente. Dacă doriți să le sortați manual în funcție de File Extension și File Type, ar fi o sarcină dificilă dacă aveți mii de fișiere într-un singur dosar. Trebuie să le selectați înainte de a vă deplasa. În caz
Pentru a vă ajuta în această problemă,
Cum se folosește facebook pentru a găsi wifi pentru a găsi hotspoturi gratuite
Iată un scurt howto pe noua funcție Căutare WiFi pentru a găsi hotspoturi gratuite. Verifică!







