我有一个大文件,我需要从特定的行号中剪掉一部分字符串(最后三个值)。我必须将剪切线片段粘贴到另一个文件的另一行的末尾。大文件中的行看起来像这样:
33 X2_C(4) 0.2454 1.1280 0.0073 1.4926102 15.5148009 0.0724955
34 X2_C(5) 0.2487 1.2156 -0.0585 1.5876791 16.7196951 -0.5831547
35 X2_C(6) 0.2529 1.2191 -0.1998 1.7741292 16.7675608 -1.9922789
现在,我知道要获取最后三个数字,正则表达式应如下所示:
\-{0,1}\d[0-9]{0,2}\.\d[0-9]{4,6}\s+\-{0,1}\d[0-9]{0,2}\.\d[0-9]{4,6}\s+\-{0,1}\d[0-9]{0,2}\.\d[0-9]{4,6}
要修改的文件如下所示:
C(Fragment=1)
C(Fragment=2)
C(Fragment=2)
是awk的一个,首先是我使用的测试文件:
$ cat file1
111 112 113 114
121 122 123 124
131 132 133 134
141 142 143 144
151 152 153 154
$ cat file2
211
221
231
241
awk:
$ cat program.awk
BEGIN {
n=split(from,from2,",")
m=split(to,to2,",")
if(n!=m)
exit
for(i in from2) {
from3[from2[i]]=i
to3[to2[i]]=i
}
}
NR==FNR {
if(FNR in from3)
from2[from3[FNR]]=$(NF-2) OFS $(NF-1) OFS $NF
next
}
(FNR in to3) {
$0=$0 OFS from2[to3[FNR]]
}1
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。