【问题标题】:How to compare 2 files and print out only selected info?如何比较 2 个文件并仅打印选定的信息?
【发布时间】:2019-01-16 03:05:26
【问题描述】:

我正在尝试比较这 2 个文件,并且只打印出我需要的内容作为期望的输出。

File1: 
012345:x:9012345:9012345:John Smith:/home/bin/bash
543210:x:9876543:9876543:Troy Denver:/home/bin/bash
111111:x:9898989:9898989:Mathew Moore:/home/bin/bash
222222:x:0101010:0101010:Chuck Maxwell:/homebin/bash
333333:x:1212121:1212121:Bob Evans:/home/bin/bash

File2:
333333 ALL=(ALL) NOPASSWD: ALL
543210 ALL=(ALL) NOPASSWD: ALL
222222 ALL=(ALL) NOPASSWD: ALL

Desired Output: 
333333 Bob Evans
543210 Troy Denver
222222 Chuck Maxwell

这就是我所做的

readarray num1 < file1 | awk -F'[ ]' '{print $1}'
while read -r $num1;
        do grep "$num1" file2
        echo "$num1" | awk -F':' '{print $1,$5}'

done < file3.txt

【问题讨论】:

标签: linux bash sudoers passwd


【解决方案1】:

使用 GNU 加入、排序、sed 和 bash:

join -j 1 -t : <(sort File1) <(sed 's/ /:/' File2 | sort) -o 1.1,1.5 | sed 's/:/ /'

输出:

222222 查克麦克斯韦 333333 鲍勃·埃文斯 543210 特洛伊丹佛

见:man join

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 2020-11-24
    • 1970-01-01
    • 2020-12-29
    • 2016-01-16
    相关资源
    最近更新 更多