我正在尝试阅读/ grep一段时间(.
)之前的特定字词或内容。
e.g。 file1
有abinaya.ashok
我希望在没有硬编码任何内容的情况下使用.
之前的任何内容。
如果我尝试
grep \.\ file1
它给出了abinaya.ashok
。
我尝试过:grep\*\.\ file1
它没有给出任何东西。我们可以使用grep命令找到它,还是应该只使用awk命令?有什么想法吗?
答案 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