如何从第二个空格开始,直到文本文件的行尾



设置如下文件test.txt:

2015-01-16 15:18:37 file-folder-tokyo
2015-01-16 15:15:49 a-bucket-in_london6
2015-01-16 15:07:04 1024-logs_in_europe

grep将其转换为以下列表的语法是什么?

file-folder-tokyo
a-bucket-in_london6
1024-logs_in_europe

使用GNU grep你可以写:grep -oP '^(S+s+){2}K.*' test.txt

我将使用sed来删除前两个单词:sed -r 's/^([^ ]+ ){2}//' test.txt

grep代表g/re/p,即G全局查找R正则E表达式并 p 打印匹配行的ed命令。你想做的事情与此毫无关系,所以grep是错误的工具。您应该考虑使用的工具是cutsedawk:

$ cut -d' ' -f3 file
file-folder-tokyo
a-bucket-in_london6
1024-logs_in_europe
$ sed 's/.* //' file
file-folder-tokyo
a-bucket-in_london6
1024-logs_in_europe
$ awk '{print $NF}' file
file-folder-tokyo
a-bucket-in_london6
1024-logs_in_europe

不使用grep,我建议使用catcut命令,如下所示:

cat tests.txt | cut -d" " -f3

cat命令将读取文件中的所有内容,cut将以空格分隔行并输出第三列。

最新更新