Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
Shell 使用awk将标题添加到特定列_Shell_Command Line - Fatal编程技术网

Shell 使用awk将标题添加到特定列

Shell 使用awk将标题添加到特定列,shell,command-line,Shell,Command Line,一个新生的,没有名字的专栏!位于命名列的中间。它需要一个不影响文件顺序的标题 我将一个大文件的第一列一分为二,因此,第二列(新)没有任何标题。我试图通过“awk”和“sed”执行,但在执行时没有打乱文件的顺序 假设您有一个制表符分隔符: awk 'BEGIN {OFS=FS="\t"} NR==1 {$2 = "NewHeader" FS $2; print; next} {print;}' BEGIN{OFS=FS=“\t”}将输入和输出分隔符设置为tab,而不是默

一个新生的,没有名字的专栏!位于命名列的中间。它需要一个不影响文件顺序的标题


我将一个大文件的第一列一分为二,因此,第二列(新)没有任何标题。我试图通过“awk”和“sed”执行,但在执行时没有打乱文件的顺序

假设您有一个制表符分隔符:

awk 'BEGIN {OFS=FS="\t"} 
      NR==1 {$2 = "NewHeader" FS $2; print; next}
      {print;}'
BEGIN{OFS=FS=“\t”}
将输入和输出分隔符设置为tab,而不是默认的空格。如果不是制表符,请将“\t”更改为分隔符

NR==1{}
表示只在第一行执行操作

{$2=“NewHeader”FS$2;print;next}
说将第一行的第二个字段设置为“NewHeader”,然后是字段sep,然后是旧值。这将向该行添加一列。然后打印修改后的行,然后继续

{print;}
将应用于其余行,并在未修改的情况下打印它们

e、 g

塞德也可以这样做。如果您知道自己的列名,那么像这样简单的方法就行了:

sed '1 s/^col1\t/col1\tNewHeader\t/g' awk.txt
col1    NewHeader       col2    col3
val1    val2    val3    val4
val11   val22   val33   val44
val111  val222  val333  val444
对于第一行,这将匹配行首、列标题和选项卡,并将其替换为相同的字符串,然后是新标题和另一个选项卡

下面是更一般化的情况,捕获第一列值,然后将其与新标题和选项卡一起打印出来

$ sed '1 s/\(^[^\t]*[\t]\)/\1NewHeader\t/g' awk.txt
col1    NewHeader       col2    col3
val1    val2    val3    val4
val11   val22   val33   val44
val111  val222  val333  val444
sed '1 s/^col1\t/col1\tNewHeader\t/g' awk.txt
col1    NewHeader       col2    col3
val1    val2    val3    val4
val11   val22   val33   val44
val111  val222  val333  val444
$ sed '1 s/\(^[^\t]*[\t]\)/\1NewHeader\t/g' awk.txt
col1    NewHeader       col2    col3
val1    val2    val3    val4
val11   val22   val33   val44
val111  val222  val333  val444