J'ai un fichier qui ressemble à quelque chose comme ça:
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++)
Je veux que ça ressemble à ça (enlever les empreintes):
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++)
Comment cela peut-il être fait (en utilisant sed
peut-être?)
sed "s/^[ \t]*//" -i youfile
Attention: cela écrasera le fichier d'origine.
Pour ce problème spécifique, quelque chose comme ceci fonctionnerait:
$ sed 's/^ *//g' < input.txt > output.txt
Il est dit de remplacer tous les espaces au début d'une ligne par rien. Si vous souhaitez également supprimer des onglets, remplacez-le par ceci:
$ sed 's/^[ \t]+//g' < input.txt > output.txt
Le "s" initial avant le/signifie "substituer". Les/sont les délimiteurs des motifs. Les données entre les deux premiers/sont le motif à comparer, et les données entre les deuxième et troisième/sont les données pour le remplacer. Dans ce cas, vous remplacez par rien. Le "g" après la barre oblique finale signifie qu'il faut le faire "globalement", c'est-à-dire: sur tout le fichier plutôt que sur la seule correspondance trouvée.
Enfin, au lieu de < input.txt > output.txt
, vous pouvez utiliser l’option -i
qui signifie modifier le fichier "à la place". Cela signifie que vous n'avez pas besoin de créer un deuxième fichier pour contenir votre résultat. Si vous utilisez cette option, vous perdrez votre fichier d'origine.
vous pouvez utiliser 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++)
Boucle while/read de Shell
while read -r line
do
echo $line
done <"file"
Ce code Perl édite votre fichier d'origine:
Perl -i -ne 's/^\s+//;print' file
Le suivant effectue une copie de sauvegarde avant de modifier le fichier d'origine:
Perl -i.bak -ne 's/^\s+//;print' file
Notez que Perl emprunte beaucoup à sed (et à awk)
FWIW, si vous êtes édition ce fichier, vous pouvez probablement mettre en surbrillance toutes les lignes et utiliser votre bouton sans tabulation.
Je ne sais pas s'il est nécessaire que cela soit fait à partir de la ligne de commande. Si oui, alors: pouce en l'air: à la réponse acceptée! =)
sed -e 's/^ [\ t] * //' name_of_file_from_which_you_wou_want_to_remove_space> 'name _file_where_you_want_to_store_output'
par exemple: - sed -e 's/^ [\ t] * //' fichier1.txt> output.txt
Remarque:
s /: commande de remplacement ~ remplacement du motif (^ [\ t] *) sur chaque ligne adressée
^ [\ t] *: modèle de recherche (^ - début de la ligne; [\ t] * correspond à un ou plusieurs espaces vides, y compris la tabulation)
//: Remplacer (supprimer) tous les modèles correspondants
Voici:
user@Host:~$ sed 's/^[\t ]*//g' < file-in.txt
Ou:
user@Host:~$ sed 's/^[\t ]*//g' < file-in.txt > file-out.txt