如何从文件的第二列中删除 0

如何从文件的第二列中删除 0

我有一个脚本,可以从以下格式的文件中获取用户名和手机

**Current Format**
username        mobile
zzz             03333012345
123             03212334343
245             3712323689

现在我希望如果手机号码从“0”开始,则只应删除“0”,因此所有手机号码应显示为

**Required format:**
username        mobile
zzz             3333012345
123             3212334343
245             371232368

(如果手机启动时没有零,则保持原样)

答案1

您可以使用以下 awk 来确保仅删除第二列中的前导 0

    awk '{gsub("^0","",$2); print $1,$2}' yourfile.txt

答案2

尝试一下这个代码片段:

sed 's/\ [0]//g' test.1

注意,[ 之前有一个空格

例如

root@SHW:/tmp # cat test.1 
**Current Format**
username        mobile
zzz             03333012345
123             03212334343
245             3712323689
root@SHW:/tmp # sed 's/\ [0]//g' test.1 
**Current Format**
username        mobile
zzz            3333012345
123            3212334343
245             3712323689

它适用于我的 ubuntu-14.04

答案3

使用 Perl:

< inputfile perl -pe 's/ 0([0-9]+)$/ $1/' > outputfile
  • -pwhile (<>) {[...]}在脚本周围放置一个循环并打印处理后的行
  • -e:从参数中读取脚本

Perl 命令分解:

  • s:断言执行替换
  • /: 开始模式
  • 0([0-9]+)$:匹配并分组行末尾的一个或多个数字,前面是 0 数字,后面是一个字符
  • /:停止模式/开始替换字符串
  • $1: 替换为空格,后跟捕获的组
  • /:停止替换字符串/启动修饰符

答案4

并且bash您可以使用:

while read username mobile
do
    echo "${username} ${mobile/0/}"
done < inputfile

相关内容