我的文件如下:
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
我相信有一种简单的方法可以解决它,但我不知道。
答案 0 :(得分:13)
每条线的乞讨都有空白字符。
你可以尝试:
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
答案 1 :(得分: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',最后一个''意思是一条线的位置。
' 1'意思是第一个匹配,' g'意味着所有,也可以使用' 2g'这意味着从第二个到最后一个
试一试。