我有一个包含多行的文件。
其中第二列是user_id
,但最后七个数字是随机数。
需要将其修剪掉才能获得真实的 ID。
所以我需要的是获取1st character to the -7 character
每行第二列的 。
我搜索了substr
awk 的函数,似乎无法直接处理这项工作。
那么,如何在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 个字符。