bash заменяет первый символ в каждой строке

мой файл выглядит так:

  1 chrX_73833098_73834098
  1 chrX_73889652_73890652
  1 chrX_91194501_91195501
  1 chrX_92000157_92001157
  1 chrX_92106500_92107500

Я хочу заменить первый символ "1" в 0. Хотел выход :

  0 chrX_73833098_73834098
  0 chrX_73889652_73890652
  0 chrX_91194501_91195501
  0 chrX_92000157_92001157
  0 chrX_92106500_92107500

пытаюсь сделать это с помощью этого:

sed 's/^./0/g' file

но выход есть:

0     1 chrX_73833098_73834098
0     1 chrX_73889652_73890652
0     1 chrX_91194501_91195501
0     1 chrX_92000157_92001157
0     1 chrX_92106500_92107500

Я считаю, что есть простой способ исправить это, но я этого не знаю.

2 ответов


нет пробела в начале каждой строки.

можно попробовать:

sed 's/^\s*./0/g' file

\s-совпадение символов пробела

выход:

0 chrX_73833098_73834098
0 chrX_73889652_73890652
0 chrX_91194501_91195501
0 chrX_92000157_92001157
0 chrX_92106500_92107500

Если вы хотите сохранить пробелы:

sed 's/^\(\s*\)\(1\)//g' file

Я также заменил здесь . с 1


Я думаю, что это простой способ понять. Попробуйте:

sed 's/1/0/1' file

выход:

1 chrX_73833098_73834098
1 chrX_73889652_73890652
1 chrX_91194501_91195501
1 chrX_92000157_92001157
1 chrX_92106500_92107500

Я хочу сказать, что "S/partten/partten/g", последнее " g " означает место в строке.
"1" означает первое совпадение, " g "означает все, также вы можете использовать "2g", что означает от второго до последнего.
Попробуй.