2

我有一个这样的 grep 搜索命令:

grep -rl "<script" .

结果是这样的:

./filename.txt
./filename2.txt
./filename3.txt

我想获取结果中的每一行并在记事本++中打开它

我可以用这个在记事本++中打开一个文件:

"C:\Program Files (x86)\Notepad++\notepad++.exe" ./filename.txt

在记事本中打开每个结果时,我的命令行命令是什么样的?

4

2 回答 2

2

我在这里猜测您正在使用哪个操作系统,但是由于您使用 bash 和 grep,我假设您想要一个 bash 解决方案,即以下可能适用于您的特定 bash,似乎在 Windows 上运行:

"C:\Program Files (x86)\Notepad++\notepad++.exe" $(grep -rl "<script" .)

“技巧”是 $(...) ,它运行封闭的命令并将各个结果行放在命令行上。如果生成的文件名包含 bash 特有的字符,则需要更精细的解决方案。

于 2013-11-05T18:06:14.153 回答
0

如果您希望 Notepad++ 将文件打开到 grep 匹配的行,您可以执行

for match in $(grep -rn "<script" .); do
    "C:\Program Files (x86)\Notepad++\notepad++.exe" `echo $match | awk -F":" '{print "-n"$2" "$1}'`
done

这将调用 Notepad++ n次,其中n是匹配数。

于 2013-11-05T18:41:23.617 回答