linux - Bash:如何更改文件的第一列并且仅更改第一列

标签 linux bash scripting awk text-parsing

我有一个被程序搞砸了的文件,现在每一行看起来像这样:

somelongstring:number   number    number   number   ... a lot more columns

(制表符分隔) 我需要做的是修改每一行,如果第一列的格式为 somelengthystring:number,则将其更改为数字(去掉字符串和冒号)

我知道我可以在 awk 中使用 split 来去掉字符串和冒号,例如:

awk '{
   split($1,array,":")
} 
END{
   print array[2],$2,$3...
}'

但问题是我不想要第一列。我想要整行,只希望修复第一列。唯一的问题是有太多的列,以至于输入 $2、$3... 一直到 $35 或其他任何东西是相当愚蠢的。什么是解决此问题的更好方法?

最佳答案

使用 sed。删除从行首 (^) 到第一个冒号的所有字符。

sed 's/^[^:]*://' infile

关于linux - Bash:如何更改文件的第一列并且仅更改第一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15348852/

相关文章:

linux - 只想在 AWS 中运行一次部署后脚本

bash - 我们如何从GCP编写器(DAG)执行Bash脚本(在Compute Engine VM中存在)?

linux - 可以从不同目录启动同一进程的多个副本的 shell 脚本

sql - 在 SQL Server Management Studio 中生成 SQL 脚本

linux - 如何安全地配置 pg_hba.conf postgresql.conf 以连接到 postgresql 数据库服务器

c# - 我可以在 CentOS 上安装适用于 Linux 的 .NET Core 和 Npgsql 吗?

linux - 在 Linux 中,有没有办法找出哪个 PCI 卡插入哪个 PCI 插槽?

linux - 从 ssh 启动 zookeeper

audio - 如何将音频扩展到指定的长度

c++ - 从Lua创建C++类或 “entity”(或类似的东西)