我有一個標準的passwd文件&一個用戶映射文件 - 的格式與AD帳戶名稱(例如bloggsjoe),其映射UNIX名稱(例如jbloggs):
jbloggs bloggsjoe
jsmith的smithjohn
...等
如何編輯passwd文件以將原始unix名稱與AD帳戶名稱交換,以便passwd文件的每一行都具有AD帳戶名稱。
感謝任何幫助perl學習者。AWK或Perl文件編輯&操縱
1
A
回答
0
這裏有一個awk的一個襯墊做
$ cat map.txt
jbloggs bloggsjoe
jsmith smithjohn
$ cat passwd
root:x:0:0:root:/root:/bin/bash
jbloggs:x:493:484:Blogger:/var/run/lib:/sbin/nologin
jsmith:x:27:481:MySQL Server user:/var/lib/mysql:/bin/bash
$ awk -F":" 'FNR==NR{gsub(" +",":");m[$1]=$2;next}($1 in m){$1=m[$1]}1' OFS=":" map.txt passwd
root:x:0:0:root:/root:/bin/bash
bloggsjoe:x:493:484:Blogger:/var/run/lib:/sbin/nologin
smithjohn:x:27:481:MySQL Server user:/var/lib/mysql:/bin/bash
1
#! /usr/bin/perl -T
use strict;
use warnings;
use File::Slurp 'slurp';
my ($map_file, $pass_file) = @ARGV or die 'No arguments given!';
my %ad_for;
for my $line (slurp($map_file)) {
chomp $line;
my ($unix, $ad) = split//, $line;
$ad_for{$unix} = $ad;
}
for my $line (slurp($pass_file)) {
my ($name, @entries) = split /:/, $line;
if ($ad_for{$name}) {
print join ':', $ad_for{$name}, @entries;
}
else {
warn "name $name doesn't have an ad entry\n";
}
}
+0
謝謝,現在我不必寫它。 – 2010-04-09 11:30:47
0
使用Perl,讀取AD文件並填充AD-Unix哈希,然後您可以使用該哈希執行單線程替換。這假設你沒有重複的用戶名,當然。
(未經測試)
my %AD;
system ("perl -ane '$AD{$F[0]} = $F[1]' unixMap.txt");
system ("perl -i -ape 's/$F[0]/$AD{$F[0]}/' passwordFile.txt");
0
使用Passwd::Unix
。它會爲你/ etc/passwd,/ etc/shadow和/ etc/group的coordinate the editing。在嘗試編輯它們之前,務必備份這些文件。
相關問題
- 1. 操縱CSS文件編程
- 2. Perl編輯文件
- 3. 修改/操縱使用vim文本,awk或者sed(再次)
- 4. 的Perl編輯文件
- 5. 使用perl編輯文件
- 6. 編輯文本文件用awk/sed的
- 7. 操縱HTML文件
- 8. 操縱CSV文件
- 9. 計數和操縱列變量awk或sed
- 10. 操縱json文件python
- 11. Haskell操縱文件內容
- 12. Powershell操縱主機文件
- 13. C++:操縱文件資源?
- 14. 在Perl中操縱文件的某些行
- 15. 使用Perl編輯HTML文件
- 16. Perl的打開文件+哈希+編輯
- 17. 使用AWK或Perl轉置
- 18. 操縱XElement對象而不是XML文本的編輯器控件
- 19. 如何編寫或編輯Python文件?
- 20. 文件上傳的編輯操作
- 21. 的Perl,sed或awk的一個班輪更改文件的
- 22. 我如何使用awk或perl處理這個文件?
- 23. 操縱html文檔
- 24. 操縱Word文檔
- 25. 上下文操縱
- 26. Python:操縱大文本文件
- 27. 操縱一個文本文件
- 28. 的Linux - 操縱兩個文本文件
- 29. Linux文本文件操作與SED/AWK
- 30. sed/awk編輯一行
這兩個文件是否以完全相同的順序包含名稱?一個文件的入口是否比其他文件少?我們在這裏看到多少條目?幾十或幾百萬? – Zaid 2010-04-09 11:08:05
謝謝大家 - 這正是我所需要的 – paul44 2010-04-09 11:55:29