我有一个这样的 grep 搜索命令:
grep -rl "<script" .
结果是这样的:
./filename.txt
./filename2.txt
./filename3.txt
我想获取结果中的每一行并在记事本++中打开它
我可以用这个在记事本++中打开一个文件:
"C:\Program Files (x86)\Notepad++\notepad++.exe" ./filename.txt
在记事本中打开每个结果时,我的命令行命令是什么样的?
我在这里猜测您正在使用哪个操作系统,但是由于您使用 bash 和 grep,我假设您想要一个 bash 解决方案,即以下可能适用于您的特定 bash,似乎在 Windows 上运行:
"C:\Program Files (x86)\Notepad++\notepad++.exe" $(grep -rl "<script" .)
“技巧”是 $(...) ,它运行封闭的命令并将各个结果行放在命令行上。如果生成的文件名包含 bash 特有的字符,则需要更精细的解决方案。
如果您希望 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是匹配数。