我正在尝试打印输出第一行的第一字段。就是这种情况。我只需要SUSE
从此输出中打印即可。
# cat /etc/*release
SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 2
尝试过cat /etc/*release | awk {'print $1}'
但会打印每行的第一个字符串
SUSE
VERSION
PATCHLEVEL
Answers:
指定NR
是否要捕获所选行的输出:
awk 'NR==1{print $1}' /etc/*release
实现此目的的另一种(丑陋的)方法是:
awk '{print $1; exit}'
从输出的特定行(例如第42行)获取第一个字符串的有效方法是:
awk 'NR==42{print $1; exit}'
ugly
。甚至更好,因为在大文件上,通过在找到文件时退出并停止处理,可以节省大量时间。
NR==1
是隐式的。在答案中添加了另一个示例,该示例可能会进一步阐明。
print the first string of the first row of an output
因此在这里exit
就可以了。
使用内置变量指定行号NR
。
awk 'NR==1{print $1}' /etc/*release
sed -n 1p /etc/*release |cut -d " " -f1
如果制表符分隔:
sed -n 1p /etc/*release |cut -f1
尝试
sed 'NUMq;d' /etc/*release | awk {'print $1}'
其中NUM是行号
ex. sed '1q;d' /etc/*release | awk {'print $1}'
sed
THI平移KARI sakiye -sed -r '1s/([^ ]+) .*/\1/;q' /etc/*release
:)
tac file | awk 'END{print $1}'
但是后来意识到可能有点太多了。