我有20000行和5列的大逗号分隔文件,我想提取特定的列,但是有更多的值,所以更多的逗号,除了标题,所以如何剪切这样的列。
示例文件:
name,v4,v5
as,5,7
bs,9,3
这是我想要的输出:
cut -d, -f1,5,6
我尝试按照剪切命令但没有工作
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView meter=(ImageView)findViewById(R.id.imageView);
meter.setScaleType(ImageView.ScaleType.FIT_CENTER);
Bitmap meterIcon = BitmapFactory.decodeResource(getResources(), R.mipmap.andes);
Display display = getWindowManager().getDefaultDisplay();
int width = (display.getWidth());
int height = display.getHeight();
meter.setMinimumWidth(width);
meter.setMinimumHeight(height);
meter.setMaxWidth(width);
meter.setMaxHeight(height);
meter.setImageBitmap(meterIcon);
}
}
答案 0 :(得分:1)
通常,对于这些场景,最好使用正确的csv解析器。例如,您可以在Python中找到它们。
但是,由于您的数据似乎只是在一开始就有逗号字段,您可以决定打印第一个字段,然后是倒数第二个字段和最后一个字段:
$ awk 'BEGIN{FS=OFS=","} {print $1, $(NF-1), $NF}' file
name,v4,v5
as,5,7
bs,9,3
答案 1 :(得分:0)
在TXR Lisp中:
$ txr extract.tl < data name,v4,v5 as,5,7 bs,9,3
extract.tl
中的代码:
(mapdo
(lambda (line)
(let ((f (tok-str line #/"[^"]*"|[^,]+/)))
(put-line `@[f 0],@[f 4],@[f 5]`)))
(get-lines))
作为浓缩的衬垫:
$ txr -t '(mapcar* (do let ((f (tok-str @1 #/"[^"]*"|[^,]+/))) `@[f 0],@[f 4],@[f 5]`) (get-lines))' < data