在一段时间之前grep特定内容

时间:2014-08-29 22:47:23

标签: linux awk

我正在尝试阅读/ grep一段时间(.)之前的特定字词或内容。

e.g。 file1abinaya.ashok我希望在没有硬编码任何内容的情况下使用.之前的任何内容。

如果我尝试

grep \.\ file1  

它给出了abinaya.ashok。 我尝试过:grep\*\.\ file1

它没有给出任何东西。我们可以使用grep命令找到它,还是应该只使用awk命令?有什么想法吗?

3 个答案:

答案 0 :(得分:2)

将GNU grep用于PCRE正则表达式(用于非贪婪和积极的预测),您可以这样做:

echo 'abinaya.ashok' | grep -oP '.*?(?=\.)'
abinaya

使用awk

echo 'abinaya.ashok' | awk -F\. '{print $1}'
abinaya

答案 1 :(得分:0)

希望我理解正确:

sed -n 's/\..*//p' file1 | grep whatever

sed 表达式将仅打印点之前的部分(不打印没有点的行)。 现在使用 grep 搜索您需要的内容。

答案 2 :(得分:0)

检查以下简单示例。

包括点:

$ echo abinaya.ashok | grep -o '.*[.]'
abinaya.

没有点:

$ echo abinaya.ashok | grep -o '^[^.]\+'
abinaya