Sql awk&x27;{print$<;number>;}';但不知道<;数量>;事先
使用管道到awk每行打印一个特定列是可以的 但是如果我不知道它是哪一列,我该怎么做,除非我必须得到第一行与某个内容匹配的列 例如Sql awk&x27;{print$<;number>;}';但不知道<;数量>;事先,sql,shell,awk,Sql,Shell,Awk,使用管道到awk每行打印一个特定列是可以的 但是如果我不知道它是哪一列,我该怎么做,除非我必须得到第一行与某个内容匹配的列 例如 Title1 Title2 TargetTitle Title3 x y z a b c d e 在上表中,我只想过滤掉: Z d 但是,有两个问题 1) 我不知道确切的列号 2) 我不想要第一排(没什么大不了的,我只需要sed行2到$) 谢谢。您可以使用a
Title1 Title2 TargetTitle Title3
x y z a
b c d e
在上表中,我只想过滤掉:
Z
d
但是,有两个问题
1) 我不知道确切的列号
2) 我不想要第一排(没什么大不了的,我只需要sed行2到$)
谢谢。您可以使用awk构建输出,如下所示:
awk -v OFS='\t' 'NR>1{for (i=1; i<=NF; i++) {
if ($i=="b"||$i=="d") $i=""; printf "%s%s", $i, (i==NF)?ORS:OFS}}' file
x y z a
c e
awk -v title="TargetTitle" 'NR==1 { for (i=1;i<=NF;++i) if ($i==title) col=i }
NR>1 { for (i=1;i<=NF;++i) if (i!=col) printf "%s%s", $i, (i<NF?OFS:ORS)}' file
awk -v title="TargetTitle" 'NR==1 { for (i=1;i<=NF;++i) if ($i==title) col=i }
NR>1 { print $col }' file
awk-vofs='\t''NR>1{for(i=1;i要过滤掉一列,可以使用如下内容:
awk -v OFS='\t' 'NR>1{for (i=1; i<=NF; i++) {
if ($i=="b"||$i=="d") $i=""; printf "%s%s", $i, (i==NF)?ORS:OFS}}' file
x y z a
c e
awk -v title="TargetTitle" 'NR==1 { for (i=1;i<=NF;++i) if ($i==title) col=i }
NR>1 { for (i=1;i<=NF;++i) if (i!=col) printf "%s%s", $i, (i<NF?OFS:ORS)}' file
awk -v title="TargetTitle" 'NR==1 { for (i=1;i<=NF;++i) if ($i==title) col=i }
NR>1 { print $col }' file
例如,如果要在输出中的每列之间添加更多空间,可以更改OFS
变量的值,或将第一个格式说明符从%s
更改为%4s
如果只想打印一列,可以执行以下操作:
awk -v OFS='\t' 'NR>1{for (i=1; i<=NF; i++) {
if ($i=="b"||$i=="d") $i=""; printf "%s%s", $i, (i==NF)?ORS:OFS}}' file
x y z a
c e
awk -v title="TargetTitle" 'NR==1 { for (i=1;i<=NF;++i) if ($i==title) col=i }
NR>1 { for (i=1;i<=NF;++i) if (i!=col) printf "%s%s", $i, (i<NF?OFS:ORS)}' file
awk -v title="TargetTitle" 'NR==1 { for (i=1;i<=NF;++i) if ($i==title) col=i }
NR>1 { print $col }' file
你能详细说明一下这个“谁的第一行与什么匹配的列”吗?你期望的输出是什么?