使用awk在一行上打印特定索引的字符

使用awk在一行上打印特定索引的字符,awk,Awk,好的,我知道使用$打印一行的特定参数非常简单: $ cat file hello world $ awk '{print $1}' file hello 但是如果我想打印字符2到8呢?还是从3点到7点?awk有可能吗 awk '{print substr($0,2,6)}' file substr()的语法是 substr(字符串、起始索引、长度)是。您可以使用substr功能: 在您的情况下-对于从2到8的打印字符: echo "hello" | awk '{ print substr

好的,我知道使用$打印一行的特定参数非常简单:

$ cat file
hello world

$ awk '{print $1}' file
hello
但是如果我想打印字符2到8呢?还是从3点到7点?awk有可能吗

awk '{print substr($0,2,6)}' file
substr()的语法是


substr(字符串、起始索引、长度)
是。您可以使用
substr
功能:

在您的情况下-对于从2到8的打印字符:

echo "hello" | awk '{ print substr( $0, 2, 6 ) }'
结果是:

埃洛

如果Perl是一个选项:

perl -lne 'print substr($_,1,6)' file

输出与@nims的答案相同

为什么需要字段分隔符
-F='\n'
?或者是吗?@Levon,因为我认为OP想要找到整个记录的子串,而不是字段。我有点困惑,不是试图争论,只是为了让自己明白这一点
$0
已经是当前整行,因此如果要获取当前整行的子字符串,我不明白为什么必须指定
-F
。。我在这里错过了什么?@Levon-oops!谢谢你指出这一点。:)编辑答案。