How to remove leading whitespace from each line in a file

前端 未结 7 671
余生分开走
余生分开走 2020-12-12 19:29

I have a file that looks something like this:

for (i = 0; i < 100; i++)
    for (i = 0; i < 100; i++)
  for (i = 0; i < 100; i++)
       for (i = 0;         


        
7条回答
  •  轮回少年
    2020-12-12 20:07

    For this specific problem, something like this would work:

    $ sed 's/^ *//g' < input.txt > output.txt
    

    It says to replace all spaces at the start of a line with nothing. If you also want to remove tabs, change it to this:

    $ sed 's/^[ \t]+//g' < input.txt > output.txt
    

    The leading "s" before the / means "substitute". The /'s are the delimiters for the patterns. The data between the first two /'s are the pattern to match, and the data between the second and third / is the data to replace it with. In this case you're replacing it with nothing. The "g" after the final slash means to do it "globally", ie: over the entire file rather than on only the first match it finds.

    Finally, instead of < input.txt > output.txt you can use the -i option which means to edit the file "in place". Meaning, you don't need to create a second file to contain your result. If you use this option you will lose your original file.

提交回复
热议问题