如何读取文件多行内容并作为grep的-e模式参数
解决方法
直接用grep的-f参数就能实现,这是最简洁且高效的方式,完全不需要循环:
ls -lart | grep -f t.txt
原理说明
grep -f <文件名> 会读取文件里的每一行内容,将其作为独立的匹配模式,效果和手动写多个-e 参数完全一致。比如你的t.txt里有John、Alex、Danny三行,这条命令就等价于ls -lart | grep -e John -e Alex -e Danny。
额外方案(如果需要显式生成-e参数)
如果一定要生成带-e的参数列表,可以用sed配合命令替换实现:
ls -lart | grep $(sed 's/^/-e /' t.txt)
sed在这里把每一行的开头加上-e ,比如把John变成-e John,最终拼接成-e John -e Alex -e Danny传给grep。不过这种方式如果文件名包含空格或特殊字符时需要额外处理,不如-f参数可靠。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

