Awk 在所有行中插入具有相同字符串的列

Awk 在所有行中插入具有相同字符串的列,awk,sed,Awk,Sed,我有这个档案 mean.cel sample.cel 1 2 3 4 我想插入第二列标题部分名称的列 这将是预期的结果 mean.cel newcolumn sample.cel 1 sample 2 3 sample 4 我该怎么做呢?我想说 $ awk 'NR==1{print $1, "new column", $2; next} {print $1, "sample", $2}' file mean.cel new column sample.cel 1 sample 2 3

我有这个档案

mean.cel sample.cel
1  2
3  4
我想插入第二列标题部分名称的列

这将是预期的结果

mean.cel newcolumn sample.cel
1  sample 2
3  sample 4
我该怎么做呢?

我想说

$ awk 'NR==1{print $1, "new column", $2; next} {print $1, "sample", $2}' file
mean.cel new column sample.cel
1 sample 2
3 sample 4
为了使其更加健壮,允许您拥有多个字段(而不仅仅是2个),我们可以说:

awk '{$1 = $1 OFS (NR==1?"new column":"sample")} 1' file
这里的想法是在第一个字段中附加一个新值。通过玩
NR
,我们可以根据处于第1行或其他行的情况切换行为

sed '1 {s/ / NewColumn /;b;}
s/ / Sample /' YourFile
  • 基于您的示例并使用空格作为分隔符

谢谢。真管用!。我怎样才能做到同样的事情呢?但是在多个文件中(比如说以递归的方式),这可能是一个新问题。至少张贴到目前为止你尝试了什么。此外,如果您的问题得到解决,您可以将答案标记为接受。单击答案旁边的复选标记,将答案从空心切换为绿色。看看你有什么问题!按罐头上写的做,所以+1。不过,我可能会使用
{$1=$1 of s“sample”}1
使其适用于任意数量的列,有趣的是,我采纳了您的想法,并对其进行了一些调整,使其有点花哨:
{$1=$1 of s(NR==1?“新列”:“sample”)}1
。谢谢你的主意!