Как убрать пробел в начале строки, используя sed Plan 9

Похоже, что это должно просто удалить не более 2 пробелов в начале каждой строки: cat test.txt | 9 sed 's/^ //g; вместо этого он заменяет все пробелы в начале строки. Похоже, что в GNU sed, как я и ожидал, есть, но я заинтересован в изучении плана Plan 9.

Обратите внимание 9 sed синтаксис здесь, потому что я запускаю его из plan9port.

Более подробно:

$ cat test.txt
This
  is
    a test.
Bye
$ cat test.txt | 9 sed 's/^  //g'
This
is
a test.
Bye

Я ожидаю, что вывод будет больше похоже на использование GNU sed:

$ cat test.txt | sed 's/^  //g'
This
is
  a test.
Bye

1 ответ

Решение

Похоже, что план 9s SED сломан, как это лечит

sed 's/^  //g'

как если бы это было (псевдокод):

do
    sed 's/^  //'
until the sed output is no longer different from the input

или же:

sed 's/^  *//'

или аналогичный вместо правильной интерпретации, которая такая же, как если бы g не присутствовал:

sed 's/^  //'
Другие вопросы по тегам