我在比较所有passwd和shadow文件的输出时遇到问题,并且仅使用用户名字段就具有相同和不同的输出
我正在使用grep命令
到目前为止,这是我的代码
grep -f shadowfile.txt passwordfile.txt > same.txt
grep -Fxvf shadowfile.txt passwordfile.txt > diff.txt
我希望same.txt具有所有用户,但差异1中没有任何条目
答案 0 :(得分:0)
我知道的一种方法是使用comm命令
awk -F':' '{ print $1 }' passwordfile.txt | sort > passwordfile.sorted
awk -F':' '{ print $1 }' shadowfile.txt | sort > shadowfile.sorted
comm -12 passwordfile.sorted shadowfile.sorted > same.txt
comm -3 a1 a2 passwordfile.sorted shadowfile.sorted | sed 's/[ \t]*//' > diff.txt
comm 命令需要首先对输入数据进行排序 我已经使用awk and sort命令将排序的用户名列表生成到临时文件中
对于diff.txt,管道中的sed用于删除输出中的空格和制表符
答案 1 :(得分:0)
您可以使用以下命令:
awk -F : '{print $1}' passwd.txt shadow.txt |sort | uniq -u > diff.txt
awk -F : '{print $1}' passwd.txt shadow.txt |sort | uniq -d > same.txt