在awk中打​​印字符串

时间:2014-03-22 13:15:57

标签: bash shell printing

我在使用awk打印时遇到问题,因为我是新手。

这是代码:

nm $1 >file1 
nm $2 >file2
awk '{print $(NF)}' file1 | sort -u >one
awk '{print $(NF)}' file2 | sort -u >two

var1=$(grep -Fxf two one)

(代码正在查找两个文件中相似的符号(函数)。它保存这些字符串,这两个文件在var1中相同)

我需要做的就是拿第一个参数(输入文件),打印它,取第二个文件并打印它,然后打印var1,全部在同一行。输出应如下所示:

 argument1 -> argument2 (first line from var1)
 argument1 -> argument2 (second line from var1)
 .
 .
 .
 argument1 -> argument2 (last line from var1)

谢谢

2 个答案:

答案 0 :(得分:3)

var1读取每一行并使用循环打印:

while read line; do
  echo "$1 -> $2" "${line}"
done <<<"${var1}"

<<<被称为here strings

答案 1 :(得分:2)

这就是我重构你的脚本的方法:

while read -r line; do
   echo "$1 -> $2 ($line)"
done < <(grep -Fxf <(nm "$1"|awk '{print $(NF)}') <(nm "$2"|awk '{print $(NF)}'|sort -u))