关于 linux:cut 或 awk 命令打印第一行的第一个字段
cut or awk command to print first field of first row
我正在尝试打印输出第一行的第一个字段。情况就是这样。我只需要从此输出中打印 SUSE 。
|
1
2 3 4 5 |
# cat /etc/*release
SUSE Linux Enterprise Server 11 (x86_64) |
尝试使用 cat /etc/*release | awk {'print $1}' 但打印每一行的第一个字符串
|
1
2 3 |
SUSE
VERSION PATCHLEVEL |
如果要从选定行捕获输出,请指定 NR:
|
1
|
awk 'NR==1{print $1}' /etc/*release
|
实现相同目的的另一种(丑陋)方法是:
|
1
|
awk '{print $1; exit}'
|
在输出中从特定行(例如第 42 行)获取第一个字符串的有效方法是:
|
1
|
awk 'NR==42{print $1; exit}'
|
相关讨论
- @jaypal 我也想过添加一个 tac file | awk 'END{print $1}' 但后来意识到它可能有点太多了。
- 尽管这会使您的丑陋解决方案与提议的丑陋解决方案相比显得非常漂亮!
- 它不是 ugly。更好的是,因为在一个大文件上,它会通过退出找到并停止处理来节省大量时间。
- @Jotne 我称它为丑陋只是因为 NR==1 是隐含的。在答案中添加了另一个示例,可能会更清楚一点。
- @devnull 我知道,但是 OP 的要求很明确 print the first string of the first row of an output 所以这里 exit 就可以了。
- @Jotne你知道的,所以这可能很明显。对于新人来说,可能不是。
- 第三个示例中的 exit(在指定 NR 之后)真的有必要吗?
使用 NR 内置变量指定行号。
|
1
|
awk 'NR==1{print $1}' /etc/*release
|
试试这个:
|
1
|
head -1 /etc/*release | awk '{print $1}'
|
你可以用 head 代替 cat:
|
1
|
head -n1 /etc/*release | awk '{print $1}'
|
|
1
|
df -h | head -4 | tail -1 | awk '{ print $2 }'
|
更改数字以根据自己的喜好进行调整。
或者使用while循环,但这可能是一种不好的方法。
相关讨论
- 现在这是一个漂亮的 hack!
|
1
|
sed -n 1p /etc/*release |cut -d"" -f1
|
如果制表符分隔:
|
1
|
sed -n 1p /etc/*release |cut -f1
|
awk, sed, pipe, 太重了
|
1
|
set `cat /etc/*release`; echo $1
|
试试
|
1
|
sed 'NUMq;d' /etc/*release | awk {'print $1}'
|
其中 NUM 是行号
|
1
|
ex. sed '1q;d' /etc/*release | awk {'print $1}'
|
相关讨论
- 这将打印整个第一行,而不是 OP 所述的第一字段。
- 回答 saras che pan thodu laambu che。 Khali sed thi pan kari sakiye - sed -r '1s/([^ ]+) .*/\1/;q' /etc/*release:)
你可以杀死正在运行容器的进程。
使用这个命令可以列出与docker容器相关的进程:
|
1
|
ps -aux | grep $(docker ps -a | grep container-name | awk '{print $1}')
|
现在你有了用 kill 或 kill -9 杀死的进程 ID。
相关讨论
- 这个答案与提出的问题有什么关系?