【发布时间】:2023-03-14 21:10:01
【问题描述】:
我有一个分隔文件,其前几个字段如下所示:
2774013300|184500|2012-01-04 23:00:00|
我想更改第一个字段等于或超过 8 个字符的某些行。 我想截断第一列中的值。
对于2774013300,我希望它的值变成27740133。
我想在sed 或awk 中执行此操作。
使用sed,我可以在行首找到任何超过 8 位的数字,但我不太确定如何截断它,我假设使用替代。
sed -n -e /'^[0-9]\{10,\}/p' infile
我想我可以对前 8 个字符进行分组并在替代命令中返回这些字符,但我不太确定该怎么做。
在 awk 中,我可以检测到第一个字段,但不太确定如何使用 substr 更改第一个字段,然后返回其余字段,因此保留了一整行。
awk -F'|' '{ if (length($1) > 9) { print $1; print length($1);} }' infile
【问题讨论】: