bash 替换每一行中的第一个字符 [英] bash substitute first character in every line

查看:56
本文介绍了bash 替换每一行中的第一个字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的文件如下所示:

  1 chrX_73833098_73834098
  1 chrX_73889652_73890652
  1 chrX_91194501_91195501
  1 chrX_92000157_92001157
  1 chrX_92106500_92107500

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

I want to replace first character "1" into 0. Wanted output is :

  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

我相信有一种简单的方法可以修复它,但我不知道.

I believe there is easy way to fix it, but I don't know it.

推荐答案

每行开头有空格.

你可以试试:

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

\s - 匹配空白字符

\s - match white space characters

输出:

0 chrX_73833098_73834098
0 chrX_73889652_73890652
0 chrX_91194501_91195501
0 chrX_92000157_92001157
0 chrX_92106500_92107500

如果你想保留空白字符:

if you want to preserve whitespace characters:

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

我这里也换过.与 1

这篇关于bash 替换每一行中的第一个字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆