Grep,用于在所需文本前添加前导空白

时间:2019-01-18 04:44:36

标签: grep whitespace

我需要grep为空格和文件扩展名之间存在的文件名。示例:

[meghanak@cycrh6rtp32 CIT]$ echo -e "Akqmskdnlcn shddhjshd.py" | grep "[[:space:]]*.py"
-e Akqmskdnlcn shddhjshd.py

但是我想要的结果是:

shddhjshd.py

3 个答案:

答案 0 :(得分:0)

$ echo -e "Akqmskdnlcn shddhjshd.py" | grep -o "[^[:space:]]*\.py"
shddhjshd.py

^将否定捕获组。使用[:space:]意味着字符而不是空格。
-o仅用于打印匹配的内容。

答案 1 :(得分:0)

如果您可以在grep之后使用其他工具,则cut可以使此操作非常简单:

$ echo -e "Akqmskdnlcn shddhjshd.py" | grep "[[:space:]]*.py" \
    | cut -d' ' -f2
shddhjshd.py

如果只需要使用grep,则可以转过头来匹配“ .py”之前的任何“非空格”非空格(\ S),然后使用-o标志进行pring比赛,就在那里:

$ echo -e "Akqmskdnlcn shddhjshd.py" | grep -o "\S*.py"
shddhjshd.py

答案 2 :(得分:0)

使用Awk

$echo "Akqmskdnlcn shddhjshd.py" | awk -F' ' '{print $2}'
shddhjshd.py

echo "Akqmskdnlcn shddhjshd" | awk -F' ' ' $2 ~ /.*.py/{print $2}'