如何在awk中从第1个字符剪切到-7个字符?

如何在awk中从第1个字符剪切到-7个字符?

我有一个包含多行的文件。

其中第二列是user_id,但最后七个数字是随机数。

需要将其修剪掉才能获得真实的 ID。

所以我需要的是获取1st character to the -7 character每行第二列的 。

我搜索了substrawk 的函数,似乎无法直接处理这项工作。

那么,如何在awk中从第1个字符剪切到-7个字符呢?

答案1

awk '{ print substr($2,1,length($2)-7) }'

如果 length($2) <= 7,您将不会得到任何输出。是否应该有最小长度?如果是这样,您可以在 awk 中定义一个 min() 函数:

awk 'function min(a,b){return a<b?b:a}  ..<rest of code>..'

答案2

假设需要在第二列上完成操作(修剪最后 7 个字符):

[whatever command you use to open your file] | awk '{ print $2 }' | rev | cut -c 8- | rev

详细情况如下:

awk '{ print $2 }'获取文件的第二列

rev准备字符串(反转它)。我认为无法cut删除最后 N 个字符,因此这个东西会从反转字符串中删除前 N 个字符。

cut -c 8-从字符串中删除前 7 个字符。 (经过反复试验发现,需要验证)

rev反转处理后的字符串。这将显示原始字符串,但没有 7 个字符。

相关内容