我正在解析一个文件,并使用 awk 来获取第一个和第三个字段。
这一切都很好;但在第一个字段中,我想删除该字符串的最后 4 个字符;到目前为止,我还没有找到在 awk 中执行此操作的方法,唯一的方法是进行多次调用,因此我将 awk 输出保存在 2 个变量中,然后修剪第一个字符串。
有更有效的方法吗?这就是文件的样子
abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod
这就是我在循环中运行的内容
echo $output | awk -F, "{print $1, $3}"
这将正确打印该行,但随后我想修剪 $1,删除最后 4 个字符
答案1
一种方法是使用 awk 的substr
函数。例如,从此输入开始:
$ cat input
abcdefghi.234,12345,xyz
riosadsef.543,19432,eis
baifafsag.342,01934,eod
我们可以打印第一列和第三列,并省略第一列的最后四个字符:
$ awk -F, '{print substr($1, 1, length($1)-4), $3}' input
abcdefghi xyz
riosadsef eis
baifafsag eod