0

我有一个文件具有以下结构的场景:

This is the list of all the employees and their desk numbers
Please dont exchange the chairs or drawers
Handle the furniture around with care
Name    Desk No
----    -------
Joe     445
May     560
Sue     669

我只需要获取桌号。我正在考虑----用作过滤器并在后面的文本之后打印第二列。有更好的解决方案吗?

4

4 回答 4

4

另一种方法:

$ awk 'p{print $2}$1=="----"{p=1}' file
445
560
669

这使用变量p作为打印标志(默认值为零)。只有当我们设置为非零值print $2时,才会执行该块。p我们p在看到第一个字段所在的行之后进行设置----

于 2013-03-07T12:39:05.607 回答
2

如果文件始终具有相同的标题(至少相同的行数),您可以从特定行开始打印:

awk 'NR>=6 {print $2}' file_name

将从第 6 行打印到最后。然后我们只打印第二条记录。

于 2013-03-07T12:35:37.963 回答
1

这是 sed 的实现:

sed -n '/^----/,${/----/!s/[^ ]* *//p}' file.txt

说明:从 ---- 开始的第一行到文件结尾,删除第一个字段,打印该行的所有其他内容。

于 2013-03-07T12:41:26.707 回答
0

简单的怎么样grep

$ grep -o "[0-9]\+" input
445
560
669
于 2013-03-07T12:49:11.960 回答