我在使用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)
谢谢
答案 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))