首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux -限制文本的长度

问Linux -限制文本的长度
EN

Stack Overflow用户
提问于 2017-03-17 00:08:02
回答 1查看 28关注 0票数 0

我想通过列在不同文件中的名称来提取一些列。

我在下面的链接中找到了这个有用的代码:AWK extract columns from file based on header selected from 2nd file

我试着编辑一些来打印页眉和限制页眉的长度。

代码语言:javascript
复制
#!/bin/bash

DATAFILE=${1:-data.txt}
COLUMNFILE=${2:-list.txt}

awk -v colsFile="$COLUMNFILE" '
   BEGIN {
     j=1
     while ((getline < colsFile) > 0) {
        col[j++] = $1
     }
     n=j-1;
     close(colsFile)
     for (i=1; i<=n; i++) s[col[i]]=i
   }
   NR==1 {
     for (f=1; f<=NF; f++)
       if ($f in s) c[s[$f]]=f
       printf ${$f:0:3}
   }
   { sep=""
     for (f=1; f<=n; f++) {
       printf("%c%s",sep,$c[f])
       sep=" "
     }
     print ""
   }
' "$DATAFILE"

我之前在链接中使用了相同的示例。

代码语言:javascript
复制
$ cat data.txt
ID,head1,head2,head3,head4
1,25.5,1364.0,22.5,13.2
2,10.1,215.56,1.15,22.2

$ cat list.txt
ID
head1
head4

$ dataExtractor.sh data.txt list.txt
1,25.5,13.2
2,10.1,22.2

我想要的输出是

代码语言:javascript
复制
ID,hea,hea
1,25.5,13.2
2,10.1,22.2

在我编辑代码以包含${$f:0:3}之后,它给出了一个语法错误。请帮帮我,谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-03-17 00:22:17

来自man 1 awk

代码语言:javascript
复制
   substr(s, i [, n])      Return  the  at most n-character substring of s
                           starting at i.  If n is omitted, use  the  rest
                           of s.

..。

代码语言:javascript
复制
substr($f, 0, 3)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42839273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档