awk - 如何从tsv文件中提取第一列?

标签 awk sed cut

我有一个包含一些数据的文件,我只想将第一列用作脚本的标准输入,但提取时遇到了麻烦。
我尝试使用这个

awk -F"\t" '{print $1}' inputs.tsv

但它仅显示第一列的首字母。我尝试了其他一些方法,但是它要么显示整个文件,要么仅显示第一列的第一个字母。

我的文件如下所示:
Harry_Potter    1
Lord_of_the_rings    10
Shameless    23
....

最佳答案

您可以使用在所有Unix和Linux系统上都可用的cut:

cut -f1 inputs.tsv

您不需要指定-d选项,因为tab是默认的定界符。从man cut:

 -d delim
         Use delim as the field delimiter character instead of the tab character.


正如本杰明正确说的那样,您的awk命令确实是正确的。 Shell将文字\t作为参数传递,而awk确实将其解释为制表符,而其他命令(如cut)则可能不会。

不知道为什么只得到第一个字符作为输出。

您可能需要看一下这篇文章:
  • Difference between single and double quotes in Bash
  • 关于awk - 如何从tsv文件中提取第一列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49340780/

    相关文章:

    awk - 用键分隔行并存储在不同的文件中

    linux - Bash - 根据条件过滤行

    linux - 如何grep值小于或等于值的行

    regex - sed 在换行符中匹配模式

    linux - 搜索 HTM 文件并在第一行添加

    linux - 在日志文件中计算时间

    c++ - 确定相交四边形?

    bash - 如何从文件 bash unix 中剪切几行

    bash 将换行符替换为引号

    linux - 比较字符串并将值连接到 bash shell 中的一个字段中