也许是一个奇怪的问题,但我试图用grep命令的输出来选择匹配的单词而不是行。这个词里面还有一个通配符。
git log --format=%aD <file> | tail -1 | grep -oh 201
命令的第一部分和第二部分检查git日志中的文件,并获取与创建日期和时间相关的行。我正在尝试编写一个bash脚本,它在创建它的年份做了一些事情,所以我需要抓住那个单词(年份)。
查看grep文档,-o专门打印匹配的单词(-h禁止文件名)。我找不到任何允许匹配它匹配的单词的 rest 的东西(尽管我可能只是间距)。
所以上一个命令的输出是:
201
我需要它(作为一个例子):
2017
非常感谢帮助!
答案 0 :(得分:3)
您可以使用.
作为通配符:
$ echo 'before2017after' | grep -o '201.'
2017
或者,更好的是,指定第四个字符是数字:
$ echo 'before2017after' | grep -o '201[[:digit:]]'
2017
注意:
由于您从stdin获取输入,因此没有文件名。因此,在这种情况下,-h
不会改变任何内容。
[[:digit:]]
是一种指定数字的unicode安全方式。