0

我只是在这方面度过了最糟糕的时光。这是我的 nawk 声明:

nawk -F"\t" '{print substr($1,0,4)","substr($1,5,4)","substr($1,9,4)","$2","$3","$4","$5","$6}' filename

简而言之,这是一个制表符分隔的文件。我想将第一列(12 个字符)分成 3 列,并使用 substring 函数来实现。然后,我想打印没有第一列的其余数据。这是我遇到问题的附加部分。

在当前的迭代中,没有 6 列的行将带有逗号,超过 6 列的行不会被打印。

有什么想法吗?

4

1 回答 1

1

未经测试,但试试这个:

nawk -F"\t" -v OFS=, '
    {$1 = substr($1,0,4) OFS substr($1,5,4) OFS substr($1,9,4)}
    {print}
' filename

更新评论——我假设你想要引号中的每个字段:

nawk -F"\t" -v OFS=, -v q="'" '
  {
    $1 = q substr($1,0,4) q OFS q substr($1,5,4) q OFS q substr($1,9,4) q
    for (i=2; i<=NF; i++) 
      $i = q $i q
    print
  }
' filename

我将单引号作为变量传递给 nawk,因为您不能将单引号嵌入到单引号字符串中。

于 2012-03-08T22:32:15.257 回答