删除第一列,然后在awk中保持原始线不变

jav*_*dba 6 unix shell awk

我正在尝试使用awk删除文本文件中的前三个字段.删除前三个字段很容易.但是线路的其余部分被awk搞砸了:分隔符从一个标签变为另一个空格

这是我尝试过的:

head pivot.threeb.tsv | awk 'BEGIN {IFS="\t"} {$1=$2=$3=""; print }' 
Run Code Online (Sandbox Code Playgroud)

前三列已正确删除.问题是输出结束时,列$ 4 $ 5 $ 6等之间的选项卡转换为空格.

更新:标记为重复的另一个问题是在此之后创建的:查看日期.

Ken*_*ent 5

首先,如ED评论,您必须FS在awk中使用字段分隔符. tab变成space你的输出,因为你没有定义OFS.

awk 'BEGIN{FS=OFS="\t"}{$1=$2=$3="";print}' file
Run Code Online (Sandbox Code Playgroud)

这将删除前3个字段,并将其余文本保持为"未触动"(您将看到前3个选项卡).也将在输出<tab>中保留.

awk 'BEGIN{FS=OFS="\t"}{print $4,$5,$6}' file
Run Code Online (Sandbox Code Playgroud)

将输出没有前导空格/制表符.但是如果您有500列,则必须在循环中执行,或使用sub函数或考虑其他工具,例如.


anu*_*ava 5

实际上,这可以通过一个非常简单的cut命令来完成,如下所示:

cut -f4- inFile
Run Code Online (Sandbox Code Playgroud)