我有一个包含一些数据的文件,我只想将第一列用作脚本的标准输入,但提取时遇到了麻烦。我尝试使用这个
awk -F"\t" '{print $1}' inputs.tsv
Run Code Online (Sandbox Code Playgroud)
但只显示第一列的首字母。我尝试了其他一些方法,但是它要么显示整个文件,要么仅显示第一列的第一个字母。
我的文件如下所示:
Harry_Potter 1
Lord_of_the_rings 10
Shameless 23
....
Run Code Online (Sandbox Code Playgroud)
您可以使用cut在所有Unix和Linux系统上可用的:
cut -f1 inputs.tsv
Run Code Online (Sandbox Code Playgroud)
您不需要指定-d选项,因为tab是默认的定界符。来自man cut:
Run Code Online (Sandbox Code Playgroud)-d delim Use delim as the field delimiter character instead of the tab character.
正如本杰明正确说的那样,您的awk命令确实是正确的。Shell将文字\ t作为参数传递,而awk确实将其解释为制表符,而其他命令则cut可能不这样做。
在Bash中,正确的表示方式是使用ANSI引号,如下所示:
awk -F$'\t' '{print $1}' inputs.tsv
Run Code Online (Sandbox Code Playgroud)
不知道为什么只得到第一个字符作为输出。
您可能需要看一下这篇文章: