bash替换每行中的第一个字符

PoG*_*bas 8 bash sed

我的文件看起来像这样:

  1 chrX_73833098_73834098
  1 chrX_73889652_73890652
  1 chrX_91194501_91195501
  1 chrX_92000157_92001157
  1 chrX_92106500_92107500
Run Code Online (Sandbox Code Playgroud)

我想将第一个字符"1"替换为0.通缉输出是:

  0 chrX_73833098_73834098
  0 chrX_73889652_73890652
  0 chrX_91194501_91195501
  0 chrX_92000157_92001157
  0 chrX_92106500_92107500
Run Code Online (Sandbox Code Playgroud)

试着这样做:

sed 's/^./0/g' file
Run Code Online (Sandbox Code Playgroud)

但输出是:

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
Run Code Online (Sandbox Code Playgroud)

我相信有一个简单的方法来解决它,但我不知道.

wis*_*ent 14

每条线的乞讨都有空白字符.

你可以试试:

sed 's/^\s*./0/g' file
Run Code Online (Sandbox Code Playgroud)

\ s - 匹配空格字符

输出:

0 chrX_73833098_73834098
0 chrX_73889652_73890652
0 chrX_91194501_91195501
0 chrX_92000157_92001157
0 chrX_92106500_92107500
Run Code Online (Sandbox Code Playgroud)

如果你想保留空白字符:

sed 's/^\(\s*\)\(1\)/\10/g' file
Run Code Online (Sandbox Code Playgroud)

我也在这里取代了.1


小智 7

我认为这是一种易于理解的方式.尝试:

sed 's/1/0/1' file
Run Code Online (Sandbox Code Playgroud)

输出:

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',这意味着从倒数第二个.
试试.