我有一个包含数千行格式的文件
unwantedtext1
unwantedtext1
50779 1 52476 52475 52481 52485
50780 1 52485 52481 52480 52484
.....
.....
unwantedText2
50614 1.8837812e+001 7.0057003e+000 1.6900000e+002
52200 4.6960466e+001 -2.5497744e+000 1.4950614e+002
.....
.....
unwantedtext3
unwantedtext3
为了实现我的目标,我尝试了
sed -n '/^[0-9]\{3\}/p' input.txt and also # to remove the line with non numeric in beginning
grep '^[0-9][0-9][0-9]' input.txt > output.txt
在下一步中,当字段2变为实数而不是整数时,我必须在文件的开头添加文本wantedText1和wantedText2。所以输出将是
wantedtext1
wantedtext1
50779 1 52476 52475 52481 52485
50780 1 52485 52481 52480 52484
.....
.....
wantedText2
50614 1.8837812e+001 7.0057003e+000 1.6900000e+002
52200 4.6960466e+001 -2.5497744e+000 1.4950614e+002
.....
.....
wantedtext3
wantedtext3
这些想要的文本可以直接回显,也可以从其他文本输入。数据以空格分隔,而不是制表符分隔。
使用sed或awk的任何建议?
答案 0 :(得分:1)
posix版本(GNU sed上的--posix
)
sed '#n
1 {x;s/.*/WantedText2/;x
a\
WantedText1
}
/^[[:blank:]]*[0-9]\{3,\}/ {
/^[[:blank:]]*[0-9]\{3,\}[[:blank:]]\{1,\}[-0-9]\{1,\}\./ !p
/^[[:blank:]]*[0-9]\{3,\}[[:blank:]]\{1,\}[-0-9]\{1,\}\./ H
}
$ {x;p
a\
Wanted\
Text\
3
}' YourFile
选择并以1 sed
打印p
操作