我有一个文件有五列。
文件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破折号所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)