Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 从文本文件中删除某些列_Macos_Bash_Shell_Sed_Awk - Fatal编程技术网

Macos 从文本文件中删除某些列

Macos 从文本文件中删除某些列,macos,bash,shell,sed,awk,Macos,Bash,Shell,Sed,Awk,我有一个如下所示的文本文件: A B C A B C A B C A B G T C A G T C A G T C A B C A B C A B C A B A B C A B C A B C A B A D E A B D E A B D E A B C A B C A

我有一个如下所示的文本文件:

A   B   C   A   B   C   A   B   C   A   B
G   T   C   A   G   T   C   A   G   T   C
A   B   C   A   B   C   A   B   C   A   B
A   B   C   A   B   C   A   B   C   A   B
A   D   E   A   B   D   E   A   B   D   E
A   B   C   A   B   C   A   B   C   A   B
C   B   D   G   C   B   D   G   C   B   D
有没有办法只提取某些列,而保留其他列不变

例如,仅删除第2列和第5列:

A   C   A   C   A   B   C   A   B
G   C   A   T   C   A   G   T   C
A   C   A   C   A   B   C   A   B
A   C   A   C   A   B   C   A   B
A   E   A   D   E   A   B   D   E
A   C   A   C   A   B   C   A   B
C   D   G   B   D   G   C   B   D
提前谢谢

更新:

使用awk找到了这个答案,但这提取了整个“块”列,我只想提取一些

用于提取第3列至第5列的Awk:

awk -F 'FS' 'BEGIN{FS="\t"}{for (i=1; i<=NF-1; i++) if(i<3 || i>5) {printf $i FS};{print $NF}}' input.txt

awk-F'FS''开始{FS=“\t”}{for(i=1;i在您的情况下,您可以这样做

cat your_file |cut -d ' ' --complement -s -f2,5

其中“”是分隔符(在您的例子中是空格)

FAQ。存在各种
awk
示例。请尝试搜索。我刚刚使用awk检查了答案,但它们仅提取“block”,我想删除不一定相邻的列。根据要打印的列数,您可以使用
print$1、$2、$4、$6、
,但这可能会很繁琐,或者类似
$3=“”;$5=“”;print$0;
,如果您不关心输出格式,我会收到一个非法选项错误。我正在使用OSX