我在.txt文件中有一组用户数据库转储(假设在C:\ Dumps文件夹中)
所有.txt文件的结构都相同:
login:password
login:password
login:password
我的问题是将登录名从所有文件分离到“ logins.txt”并分离密码“ passwords.txt”的最简单方法是什么?这些是出于统计目的的数据,因此没有顺序[无论如何将最终排序]
我试过了 :
gawk.exe -F: "{print $ 1}" dump1.txt > logins1.txt
gawk.exe -F: "{print $ 2}" dump1.txt > passwords1.txt
gawk.exe -F: "{print $ 1}" dump2.txt > logins2.txt
gawk.exe -F: "{print $ 2}" dump2.txt > passwords2.txt
并且该方法是有效的,但是由于文件的数量,我想问一个简单的方法来自动将这两个数据与该文件夹中的文件分开。
你可以在多个文件上运行awk,也可以从awk代码内进行操作重定向,因此:
awk -F: '{ split(FILENAME,map,".");fileno=substr(map[1],length(map[1]));print $1 > "login"fileno".txt"; print $2 > "password"fileno".txt" }' dump*.txt
我们将字段定界符设置为:,然后使用awk的保留FILENAME变量来跟踪正在处理的现有文件。这样,我们就可以通过使用awk的split函数并引用map [1]在数组映射中拆分文件名来获得文件名前缀。然后,我们使用awk的substr函数对其进行进一步处理,以从文件前缀的最后一个字符中获取文件号。我们利用该filno变量将$ 1输出到登录文件,将$ 2输出到密码文件。
执行此操作会给我一个错误awk:'{awk:^无效的char'''在表达式中
我刚刚注意到这是Windows版本的gawk。这可能是您遇到的问题,
我现在必须将您的代码运行到msys中,这就是工作!非常感谢!