如果此列存在,我需要从我的表格 CSV 文件中删除一列。
我的 CSV 文件:
GENE REF ALT
AKT A G
AKT G G
Run Code Online (Sandbox Code Playgroud)
所需的输出:如果列 REF 存在删除此列
GENE ALT
AKT G
AKT G
Run Code Online (Sandbox Code Playgroud)
我试图这样做:
sed 's/\tREF.[^\t]*//' filename.csv
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
和 perl
$ perl -F'\t' -lane '@non_ref_cols = grep { $F[$_] ne "REF" } 0..$#F if $. == 1;
print join "\t", @F[@non_ref_cols]' ip.txt
GENE ALT
AKT G
AKT G
Run Code Online (Sandbox Code Playgroud)
-F'\t'
使用制表符作为字段分隔符@non_ref_cols = grep { $F[$_] ne "REF" } 0..$#F if $. == 1
对于标题行,获取所有非字段的索引 REF
print join "\t", @F[@non_ref_cols]
使用我们为标题行获得的索引数组打印所有字段,使用制表符作为字段分隔符你好,米勒(http://johnkerl.org/miller/doc)和这个 input.csv
GENE,REF,ALT
AKT,A,G
AKT,G,G
Run Code Online (Sandbox Code Playgroud)
很容易
mlr --csv cut -x -f REF input.csv
Run Code Online (Sandbox Code Playgroud)
输出是
GENE,ALT
AKT,G
AKT,G
Run Code Online (Sandbox Code Playgroud)