linux - 如何在 Linux 中使用 awk/sed 或其他命令删除某些字符串?

标签 linux bash awk sed

我想问一下,在linux下如何用命令删除一些字符串?

cat /data/filename.txt 
A|2|3|4|5|6|7|8|9|10|0030|12|05/09/17 
B|2|3|4|5|6|7|8|9|10|00045|12|05/09/17
C|2|3|4|5|6|7|8|9|10|061|12|05/09/17

和输出:

cat /data/filename.txt 
A|2|3|4|5|6|7|8|9|10|30|12|05/09/17
B|2|3|4|5|6|7|8|9|10|45|12|05/09/17
C|2|3|4|5|6|7|8|9|10|61|12|05/09/17

最佳答案

尝试:

awk -F"|" '{sub(/^0+/,"",$11)} 1' OFS="|"   Input_file

将字段分隔符设置为 |然后根据您的要求用第 111 个字段的 NULL 替换起始零,提及 1 将打印新编辑的行(如果有任何零被 NULL 替换),将输出字段分隔符设置为 |然后提到Input_file。

编辑:添加第二个解决方案,将 -000 删除到第 11 个字段,如下所示。

awk -F"|" '{sub(/^0+/,"",$11);sub(/-0+/,"-",$11)} 1' OFS="|" Input_file

我在这里做|作为字段分隔符,然后将第 11 个字段中的起始零替换为 NULL,然后将 -0+ 表示从 -0 到所有零也替换为 NULL,然后 1 将打印这些行。将输出字段分隔符设置为 |也是。

关于linux - 如何在 Linux 中使用 awk/sed 或其他命令删除某些字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43865142/

相关文章:

c++ - 从 MySQL 获取 UTF-8 数据到 Linux C++ 应用程序

android - 如何监视和记录哪个模块在 linux 内核中持有锁?

bash - “moveToLocal: Option ' -moveToLocal'尚未执行什么操作。”手段?

linux - 在一行中使用 awk 和 stat 来打印 stat 的值

linux - 从搜索到的模式中读取变量,并使用读取变量将模式替换为不同的模式

android - 无法启动 Android 模拟器

c - 如何生成12字节的随机数?

linux - 如何将图标添加到 bash 提示符

bash - 如何使用 SLURM 处理文件列表

bash - Perl eval、awk system() getline。两者都存在安全问题,一个比另一个更安全吗?为什么?