我有一个包含如下数据的文件:
15-06-18 22:00 2968
每个条目都用新行分隔。我想提取最后一个数字 (2968)。我该怎么做?(我在 Linux 上使用bash
)。
抱歉,如果我没有使用正确的标签/发帖的地方不对。我不知道该把这个问题放在哪里。
答案1
假设内容在名为“file”的文件中,则应该执行以下操作。
cut -d ' ' -f 3 file
cut 是 Unix 命令。从手册页中:
- cut-从文件的每一行中删除部分内容
-d
表示用于切割的分隔符。-f
选择哪些字段。file
是源文件。
结果发送到标准输出。
答案2
打印最后一列:
awk '{print $NF}' file
输出:
2968
该变量NF
设置为输入记录中的字段总数。$NF 始终包含最后一列的内容。更短:
awk '$0=$NF' file
答案3
awk
您可以使用,cut
或者sed
甚至是 grep 与 regex 的某种组合来提取所需的数据。
如果您拥有的文件中每一行的数据都遵循您在此处显示的确切模式:
15-06-18 22:00 2968
然后,您可以通过以下方式提取最后一个数字:
awk '{ print $3 }' file_path
为了保存数据,您可以将其重定向到另一个文件:
awk '{ print $3 }' file_path > new_file
怎么运行的 :
基本上,awk是用于文本数据操作的非常强大的工具。对于你的情况:
15-06-18 22:00 2968
上面的行可以视为 3 个字符串,space
中间用 a 分隔,awk默认情况下将空格视为分隔符(由-F
)。
要尝试使用 awk 的一些乐趣,请使用您的数据尝试一下,您会理解得更好。
awk -F: '{ print $2 }' your_file
awk -F- '{ print $3 }' your_file
请随意添加更多细节。
答案4
或者在 bash 中:
#!/bin/bash
cat "$1" | while read day hour value ; do
echo $value
done