2011-10-03 18 views
33

Mam plik o nazwie plik.txt. Ma w sobie wiele podwójnych cytatów. Chcę je wszystkie usunąć.Jak używać sed do usuwania wszystkich podwójnych cudzysłowów w pliku

Próbowałem sed 's/"//g' file.txt

Próbowałem sed -s "s/^\(\(\"\(.*\)\"\)\|\('\(.*\)'\)\)\$/\\3\\5/g" file.txt

Ani pracowali.

Jak mogę po prostu usunąć wszystkie podwójne cudzysłowy z pliku?

+0

Twoja pierwsza próba powinna działać na zwykły plik ASCII. Być może plik, nad którym pracujesz, zawiera kod Unicode " – holygeek

Odpowiedz

76

Trzeba tylko uciec cytat w pierwszym przykładzie:

$ sed 's/\"//g' file.txt 
+2

Uruchomiłem to, na ekranie przeleciał przez tysiące wpisów i cytaty już nie było.Wewnątrz pliku file.txt, cytaty były wciąż tam jest – MRTim2day

+6

Tak, 'sed' domyślnie kieruje wyjście do standardowego wyjścia i nie dotyka pliku wejściowego.Jeśli chcesz zapisać wyjście do pliku, wykonaj polecenie' sed '//"// g' plik.txt> file_new.txt', a następnie, gdy jesteś zadowolony z file_new.txt, usuń stary plik i zmień nazwę nowego. – Vicky

+7

Lub jeśli twoje 'sed' obsługuje opcję' -i', to powinno ci również umożliwić zastąpienie pliku edytowanym plikiem. – tripleee

2

Spróbuj poprzedzenie doublequote z ukośnik w swojej expresssion:

sed 's/\"//g' [file name] 
+1

Uruchomiłem to na ekranie, który przeleciał przez tysiące wpisów, a cytaty zniknęły, ale w pliku file.txt cytaty wciąż tam były. – MRTim2day

+0

Uruchomiłem to z pliku csv i wszystkie dane już nie ma Zmęczony kilka razy z tym samym rezultatem – Katarzyna

3

dodatkowego komentarza. Tak to działa:

sed 's/\"//g' infile.txt > outfile.txt 

(jednak z partii GNU sed, będzie po prostu wydrukować na ekranie)

W partii skryptów (GNU SED), to było potrzebne:

sed 's/\x22//g' infile.txt > outfile.txt 
24

Czy na pewno musisz użyć sed? Jak o:

tr -d "\"" 
+0

Co się stanie, jeśli wszystkie rodzaje ofert zostaną usunięte? A co, jeśli trzeba pracować również z Unikodem? –

3

Dla zastępując na miejscu można również zrobić:

sed -i '' 's/\"//g' file.txt 

lub Linux

sed -i 's/\"//g' file.txt 
Powiązane problemy