我有一个包含文件夹名称/值对的文件:
peter:/home/peter/ max:/home/max-lucas/ judith:/home/judith/documents/
我有另一个文件包含文件名称/值对,具有相同的名称:
max:todo.txt peter:calendar.txt peter:notes.txt peter:dummy.txt
这是一种数据库。
真正的文件不是那么简单。 我必须用sed提取数据,但这不是重点。
我想连接这两个文件:
/home/peter/calendar.txt /home/peter/notes.txt /home/peter/dummy.txt /home/max-lucas/todo.txt
我唯一的想法是:
问:是否有一个标准的CLI工具呢?
用awk很容易:
awk -F ":" 'FNR==NR{a[$1]=$2;next} $1 in a { print a[$1]$2}' homedir.txt file.txt
我找不到这样的cli工具,但我可能会find一种方法来遍历你的文件来检索你想要的输出。 首先,我们需要创build一个关键值对的用户及其目录。
declare -A users for i in $(cat file1);do users+=( [$(echo $i | awk -F ':' '{print $1}')]=$(echo $i | awk -F ':' '{print $2}')) ; done
现在我们创build了一个关键值对。 您可以通过显示字典的内容来validation
for i in "${!users[@]}"; do echo "$i - ${users["$i"]}"; done
现在我们将遍历第二个文件,在print语句中,我们将用它的目录replace用户。
for i in $(cat file2);do echo ${users[$(echo $i|awk -F ':' '{print $1}')]}$(echo $i|awk -F ':' '{print $2}') ; done
这给我看了你给我们的样本输出。