在特定列中查找并replace破折号

在特定列中查找并replace破折号,第1张

概述在特定列中查找并replace破折号

我有一个文件有五列。

文件1看起来像:

1111 1111 exm-IND1-200449980 II 1111 1111 exm-IND1-201453487 I - 1111 1111 exm-IND1-85310248 II 1111 1111 exm-IND10-102817747 DD 1111 1111 exm-IND10-18329639 - D 1111 1111 exm-IND10-27476467 II 1111 1111 exm-IND10-27727540 D -

我想摆脱-但只在第4和5列,并取代-在这些情况下为0 。 我一直在使用下面这行代码:

sed '/^([^t]*t[^t]*t[^t]*)t-t-(.*)/ s//1t0t2/' file1 > newfile

解决这个问题,但是觉得这有点笨重。 有没有人有这个问题更简洁的build议? 因为我会遇到很多。

转换只包含特定标签的XML

击。 如何获得标签之间的多行文本

使用正则Expression式replace或追加文件|中的行 linux Shell脚本

Bash – 在列中交换值

Awk代码来select多个模式

预先感谢您的帮助。

我如何grep整个,可能包装,代码行?

Unix Awk数组不打印值

如何删除包括下划线之前的字符?

在文件中每出现一个字符就插入一些东西

总计每80行一行awk

awk在这里是一个更好的选择:

awk '{sub("-","0",$4); sub("-",$5); print}'

(更新以反映您更新的问题)

GNU sed

sed -r ':k;s/-(s*S*)$/01/g;tk' file

..output:

1111 1111 exm-IND1-200449980二,

1111 1111 exm-IND1-201453487 I 0

1111 1111 exm-IND1-85310248二,

1111 1111 exm-IND10-102817747 DD

1111 1111 exm-IND10-18329639 0 D

II11111111 exm-IND10-27476467 II

1111 1111 exm-IND10-27727540 D 0

awk '{gsub(/-/,$4);gsub(/-/,$5)}1' test.in | column -t

column是保持良好的格式,如果你不需要的话,你可以删除它。

这是你想要的:

$ awk '$4=="-"{$4=0}$5=="-"{$5=0}{$1=$1}1' OFS='t' file 1111 1111 exm-IND1-200449980 II 1111 1111 exm-IND1-201453487 I 0 1111 1111 exm-IND1-85310248 II 1111 1111 exm-IND10-102817747 DD 1111 1111 exm-IND10-18329639 0 D 1111 1111 exm-IND10-27476467 II 1111 1111 exm-IND10-27727540 D 0

用awk

awk '$4=="-"{$4=0}$5=="-"{$5=0}1' inputfile

在Python中,您可以执行以下 *** 作:

file1 = [line.strip().split() for line in open('file1')] for line in file1: line[2] = line[2].replace('-','') print file1

总结

以上是内存溢出为你收集整理的在特定列中查找并replace破折号全部内容,希望文章能够帮你解决在特定列中查找并replace破折号所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1271702.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存