use*_*573 3 linux awk text replace sed
我正在尝试使用awk修改文本文件.有三列,我想删除第一列中的部分文本:
range=chr1 20802865 20802871
range=chr1 23866528 23866534
Run Code Online (Sandbox Code Playgroud)
至
chr1 20802865 20802871
chr1 23866528 23866534
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我试过awk '{ substr("range=chr*", 7) }'和awk '{sub(/[^[:space:]]*\\/, "")}1',但删除了文件中的所有内容.
将字段分隔符设置为=并打印第二个字段:
# With awk
$ awk -F= '{print $2}' file
chr1 20802865 20802871
chr1 23866528 23866534
# Or with cut
$ cut -d= -f2 file
chr1 20802865 20802871
chr1 23866528 23866534
# How about grep
$ grep -Po '(?<==).*' file
chr1 20802865 20802871
chr1 23866528 23866534
# Temp file needed
$ cut -d= -f2 file > tmp; mv tmp file
Run Code Online (Sandbox Code Playgroud)
这两种awk,cut而grep需要临时文件,如果你想保存更改回file,一个更好的解决办法是使用sed:
sed -i 's/range=//' file
Run Code Online (Sandbox Code Playgroud)
这替代range=了什么都没有,并且-i意味着更改是就地完成的,因此不需要像sed处理它那样处理临时文件.
| 归档时间: |
|
| 查看次数: |
194 次 |
| 最近记录: |