8

我的文件如下所示:

  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

我相信有简单的方法可以解决它,但我不知道。

4

2 回答 2

15

每行的开头都有空格字符。

你可以试试:

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\)/\10/g' file

我这里也换了。有 1

于 2012-04-13T11:50:58.180 回答
7

我认为这是一个容易理解的方法。尝试:

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'表示从第二个到最后一个。
试试。

于 2017-07-04T06:50:26.890 回答