jak usunąć początkowe spacje z każdej linii pliku?
Mam plik, który wygląda mniej więcej tak:
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
Chcę, aby wyglądało to tak (usuń wcięcia):
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
Jak można to zrobić (używając sed
może?)
7 answers
sed "s/^[ \t]*//" -i youfile
Ostrzeżenie: spowoduje to zastąpienie oryginalnego pliku.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-15 20:13:35
Dla tego konkretnego problemu, coś takiego działa:
$ sed 's/^ *//g' < input.txt > output.txt
Mówi, aby zastąpić wszystkie spacje na początku linii niczym. Jeśli chcesz również usunąć karty, zmień je na to:
$ sed 's/^[ \t]+//g' < input.txt > output.txt
Wiodące " s " przed / oznacza "substytut". Znaki / są ogranicznikami wzorców. Dane pomiędzy dwoma pierwszymi / są wzorcem do dopasowania, a dane między drugim i trzecim / są danymi do zastąpienia. W tym przypadku zastępujesz go niczym. "G" po ostatnim ukośniku oznacza robić to "globalnie", tj.: nad całym plikiem, a nie tylko na pierwszym znalezionym dopasowaniu.
Wreszcie, zamiast < input.txt > output.txt
możesz użyć opcji -i
, która oznacza edycję pliku "na miejscu". Oznacza to, że nie trzeba tworzyć drugiego pliku, aby zawierać wynik. Jeśli użyjesz tej opcji, utracisz oryginalny plik.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-22 12:01:50
Możesz użyć awk
$ awk '{$1=$1}1' file
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
Sed
$ sed 's|^[[:blank:]]*||g' file
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
for (i = 0; i < 100; i++)
Shell ' s while / read loop
while read -r line
do
echo $line
done <"file"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-22 13:01:47
Ten kod Perla edytuje twój oryginalny plik:
perl -i -ne 's/^\s+//;print' file
Następny wykonuje kopię zapasową przed edycją oryginalnego pliku:
perl -i.bak -ne 's/^\s+//;print' file
Zauważ, że Perl mocno pożycza od sed (i awk)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-22 19:10:59
Proszę bardzo:
user@host:~$ sed 's/^[\t ]*//g' < file-in.txt
Lub:
user@host:~$ sed 's/^[\t ]*//g' < file-in.txt > file-out.txt
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-02-22 11:47:32
Sed-e ' S / ^ [\T]*//' name_of_file_from_which_you_want_to_remove_space > 'name _file_where_you_want_to_store_output'
E. g: - sed-e' S/^ [\T]*/ / ' file1.txt > wyjście.txt
Uwaga:
S/: Zastąp polecenie ~ Zastąp dla wzorca (^[\t]*) na każdej adresowanej linii
^ [\t]*: Szukaj wzorca (^- początek linii; [\t]* dopasuj jedno lub więcej spacji, w tym tabulator)
//: Replace (delete) all matched wzór
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-27 08:40:11
FWIW, jeśli edytujesz ten plik, prawdopodobnie możesz podświetlić wszystkie linie i użyć przycisku un-tab.
- w vim, użyj shift-v, aby podświetlić linie, a następnie naciśnij
- Jeśli jesteś na Macu, możesz użyć Atom, Sublime itp., następnie podświetl myszką, a następnie naciśnij shift-tab
Nie jestem pewien, czy istnieje jakiś wymóg, aby to zrobić z linii poleceń. Jeśli tak ,to: kciuki do góry: do zaakceptowanej odpowiedzi! =)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-02 18:50:10