我有一堆文件。我为一个关键字grep并将包含关键字的文件名传递给xmllint,该文件执行XPath表达式以返回各种文件的一部分。

grep -irl "keyword" . | xargs xmllint --xpath '/HTML/BODY/P[2]'


问题是,有几个文件带有关键字,因此对各种xmllint执行有几个结果。我想在不同的行上查看每个xpath的结果。但是它们都合并在同一行上。

有小费吗?

最佳答案

您可以在-n1中使用xargs来确保一次仅使用file is passed to xargs`:

grep -irl "keyword" . | xargs -n 1 xmllint --xpath '/HTML/BODY/P[2]'


如果您想更好地控制xargs的输出,请使用带有进程替换的while循环:

while read -r file; do
    echo "Processing $file =>"
    xmllint --xpath '/HTML/BODY/P[2]' "$file
    echo "==========================="
done < <(grep -irl "keyword" .)

关于bash - 将grep/xargs的结果获取到单独的行中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42679428/

10-13 09:37