Puncte:0

Cum să eliminați un anumit caracter din fișier

drapel za

Am un dosar ca acesta.

[Oaspete]
[AAD_987d7f2f57d2]
[sper]
[SABatchJobs]
[svc-ata]
[svc-bexec]
[svc-netapp]
[dgalanos]
[rolear]
[smorgan]

Cum să elimin „[” și „]” din fișier, astfel încât să pot obține rezultatul ca mai jos

Oaspete
AAD_987d7f2f57d2
sper
SABatchJobs
svc-ata
svc-bexec
svc-netapp
dgalanos
rolar
smorgan
Puncte:2
drapel hr

Utilitarul „standard” pentru a elimina anumite caractere este tr:

NUME
       tr - traduce sau șterge caractere

REZUMAT
       tr [OPȚIUNE]... SET1 [SET2]

DESCRIERE
       Traduceți, strângeți și/sau ștergeți caractere din introducerea standard, scrieți...
       atingând ieșirea standard.

Deci de exemplu

tr -d '][' < fișier

Spre deosebire de GNU sed, tr citește și scrie doar în fluxuri standard; cu toate acestea, puteți simula editarea „la loc” folosind un fișier temporar:

tmpfile=$(mktemp)
tr -d '][' < fișier > „$tmpfile” && mv „$tmpfile”.

sau cu burete comanda din pachet moreutils:

tr -d '][' < fisier | dosar cu burete

Ai putea folosi, de asemenea awk - de exemplu prin împărțirea liniilor fișierului în câmpuri separat de ] și [ și tipărirea doar a doua:

awk -F „[][]” „{printează $2}” fișier

Puteți folosi același truc tmpfile pentru a simula editarea „la loc”, sau cu GNU awk (aka gawk), utilizați la loc modul:

gawk -i inplace -F '[][]' '{print $2}' fișier
Puncte:2
drapel in

Utilizare sed:

sed „s/[][]//g” fișier
  • The sed comanda este s/model/înlocuire/modificatoare, adică înlocuiți modelul cu înlocuire. g modificator înseamnă global, altfel doar primul meci va fi înlocuit.
  • [...] este o clasă de caractere, deci orice caracter din paranteze se potrivește.
  • ] închide clasa de caractere dacă nu este pe primul loc în interior.Deoarece vrem să includem asta în clasa noastră de caractere, o plasăm pe primul loc.
  • Înlocuirea este goală în cazul nostru.
  • Utilizare sed -i '...' pentru a vă edita fișierul în loc.

De asemenea, puteți utiliza grep -P așa cum am sugerat deja în dvs Altă întrebare:

grep -Po „\[\K[^]]*” fișier
Lorenz Keel avatar
drapel gr
Eram gata să sugerez `sed 's/\[\(.*\)\]/\1/' file`, dar răspunsul tău este mai lizibil și mai elegant decât al meu :-)
Lorenz Keel avatar
drapel gr
@tcprks dacă sunteți interesat să aplicați modificarea direct pe fișier (adică să o suprascrieți), puteți adăuga un `-i` înainte de `fișier` (acest lucru este valabil numai pentru partea `sed` a soluției.
pLumo avatar
drapel in
mulțumesc, am adăugat această sugestie la notele mele :-)

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.