Как можно стереть первый символ всех строк в файле

Как можно стереть первый символ всех строк в файле

Как можно стереть первый символ всех строк в файле, если это ноль?

например

У меня есть файл

$ cat file

01111111  01222222 6666066
09999011  02222044 0743333
01000000  30000000 2222220

Попробуйте выполнить команду sed с выводом:

$ sed 's/^0*\(.*\)/\1/' file

1111111  01222222 6666066
9999011  02222044 0743333
1000000  30000000 2222220

но это сотрет только ноль в первом столбце.

Как стереть все нули в первом символе файла, например, вывести:

1111111   1222222 6666066
9999011   2222044  743333
1000000  30000000 2222220

решение1

Вероятно, справедливо предположить, что строка в вашем тексте разделена пробелами. Если это так, вам нужно удалить ноль, если ему предшествует пробел:

sed 's/\([[:space:]]\)0/\1/g'

Конструкция \(...\)сохраняет пробел, предшествующий нулю, а при \1замене вызывает сохраненный текст.

Затем позаботьтесь также о начальных нулях:

sed -e 's/\([[:space:]]\)0/\1/g' -e 's/^0//'

Кстати, ваш пример нестеретьне начальные нули, но этозаменяетих с пробелом. Мое решение предполагает стирание.

Кроме того, ваше решение для замены начального нуля фактически заменяет целую последовательность начальных нулей. Однако ваш вопрос требуетпервыйноль, который нужно стереть. Вот что делает мое решение.

решение2

Для этого удобно использовать Perl:

perl -lape 's/\b(0+)/" " x length($1)/ge' file
 1111111   1222222 6666066
 9999011   2222044  743333
 1000000  30000000 2222220

Или эквивалент в awk

awk '{while (1) if (gsub(/\<0/, " ", $0) == 0) break; print}' file

Оба варианта превратят «0» или «00» (как отдельные слова) в простые пробелы.

Если у вас есть

$ cat file
01111111  01222222 6666066
09999011  02222044 0743333
01000000  30000000 2222220
00000007  00000009 0000000

Затем, чтобы сохранить нулевые значения в последней строке, можно:

$ perl -lape 's/\b(0+)(\d)/" " x length($1) . $2/ge' file
 1111111   1222222 6666066
 9999011   2222044  743333
 1000000  30000000 2222220
       7         9       0

Связанный контент