我有一个包含超过30列的文件,我想将第9列的长度调整为6个字符(使用shell)。 无法获得良好的解决方案。 请帮忙!
答案 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
采用默认操作打印整个记录。