将列长度修剪为6个字符

时间:2015-12-04 11:52:59

标签: shell unix

我有一个包含超过30列的文件,我想将第9列的长度调整为6个字符(使用shell)。 无法获得良好的解决方案。 请帮忙!

1 个答案:

答案 0 :(得分:2)

awk将是一个很好的选择。例如,假设我们需要将第一列($1)修剪为六个字符,我们可以编写类似

的内容
awk '{$1 = gensub(/^(......).*$/, "\\1", $1)}1'

<强>测试

$ echo 'helloworld' | awk '{$1 = gensub(/^(......).*$/, "\\1", $1)}1'
hellow

它的作用

  • gensub使用正则表达式代替。

    • /^(......).*$/匹配6个字符并在\1中捕获它们,如果您注意到()中可以看到6个点。
    • \\1用捕获的6个字符替换整个列内容。
  • 1始终评估为true,awk采用默认操作打印整个记录。