所以,我有一个文件,其中包含我过去几周运行的一些计算结果。我已将结果收集到我打算绘制的文件中。它基本上是一堆格式为" x" " Y" " f(x,y)",像这样:
1.7 4.7 -460.5338556921
1.7 4.9 -460.5368762353
1.7 5.5
但是,有些行(以最后一行为例)在第3列中包含空格,这是由计算失败引起的。我仍然希望绘制可行点,但是,因为有数千个点(因此行),这个任务只需手动完成。我想知道如何编写脚本或程序(我更喜欢使用shell脚本,但我很乐意继续执行任何工作),这会识别这些行并删除它们。有谁知道这样做的方法?
答案 0 :(得分:5)
awk '$3' <filename>
或更好
awk 'NF > 2' <filename> # if in any entry in the column-3 happens to be zero
这样做的目的!
答案 1 :(得分:0)
这几天任何shell都应该理解的最简单的grep命令形式:
grep -v '^[^[:space:]]*[[:space:]]*[^[:space:]]*[[:space:]]*$' <filename>
答案 2 :(得分:0)
使用grep:
grep ' .* [^ ]' file
或使用ERE:
grep -E '\s\S+\s\S' file
答案 3 :(得分:0)
我会用:
perl -lanE 'print if @F==3 && /^[\d\s\.+-]+$/' file
将仅打印行:
.+-
答案 4 :(得分:0)
我不知道你将如何策划。您需要grep
或awk
解决方案并将所有有效行传输到您的绘图应用程序中
当您需要为每组值调用程序时,可以在读取值时跳过无效行:
while read -r x y fxy; do
if [ -n "${fxy}" ]; then
myplotter "$x" "$y" "${fxy}"
fi
done < file