Bash linux脚本:一遍又一遍地将变量置于其他

时间:2016-05-26 06:29:10

标签: linux bash

我有两个变量:

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!

1 个答案:

答案 0 :(得分:0)

问题是你echo一个多行字符串后跟另一个多行字符串,但你要做的是将两个多行scink粘贴在一起。我可以想出两种方法来解决这个问题。最简单的方法是使用paste命令:

paste <(echo "$GrepMap") <(echo "$GrepFile")

然而,为什么同样grep两次呢?最好只到grep一次,然后使用awksed来修改输出:

grep -rl "string" ~/Downloads | awk -F/ '{print $(NF-1)" : "$(NF)}'

说明:使用/作为字段分隔符,然后打印倒数第二个字段" : "的最后一个字段。