我有两个变量:
GrepMap=$( grep -rl "string" ~/Downloads | cut -d/ -f2 )
GrepDir=$( grep -H -r "string" ~/Downloads )
接下来我要展示它们
echo "$GrepMap : $GrepFile
如果他在3个不同的地图/文件中找到了该字符串 然后我的输出就像:
Portfolio_Macht
Portfolio_Macht
Project_Macht : README.md LES10 index.html
但我希望它是这样的:
Portfolio_Macht : README.md
Portfolio_Macht : LES10
Project_Macht : index.html
任何人都可以提供帮助? THX!
答案 0 :(得分:0)
问题是你echo
一个多行字符串后跟另一个多行字符串,但你要做的是将两个多行scink粘贴在一起。我可以想出两种方法来解决这个问题。最简单的方法是使用paste
命令:
paste <(echo "$GrepMap") <(echo "$GrepFile")
然而,为什么同样grep
两次呢?最好只到grep
一次,然后使用awk
或sed
来修改输出:
grep -rl "string" ~/Downloads | awk -F/ '{print $(NF-1)" : "$(NF)}'
说明:使用/
作为字段分隔符,然后打印倒数第二个字段" : "
的最后一个字段。