您好,提前抱歉,因为我对unix / linux / scripting还不熟悉。
我有一个txt文件,其中包含20行左右的用户名:hashedpassword:numericalfield:numericalfield :::,类似于以下内容:
#paswd.txt
jgarcia:9bca3efc64b290e9ad3fa3e0add3c983:22288:0:99999:7:::
tanastsio:924e509403341760676d4f1368c87f8d:28593:0:99999:7:::
dbyrne:328fe8a2642fa5bfd1bfdfd894367e79:0:99999:7:::
我需要能够输出一行或多行的特定部分(例如,只是用户名,只是散列密码等),这样我就可以将输出用于其他用途(比较,变量,其他命令)。 )
我需要做什么:
input: $ [necessary command -params] ./paswd.txt
output: $ jgarcia
input: $ [necessary command -params] ./pswd.txt
output: $ 9bca3efc64b290e9ad3fa3e0add3c983
input: $ [necessary command -params] ./pswd.txt
output: $ jgarcia
tanastsio
dbyrne
如果可能的话加分:
input: $ [necessary command + params] ./paswd.txt
output: $ dbyrne 328fe8a2642fa5bfd1bfdfd894367e79 (no colons)
澄清一些用途:
此外,有人可以告诉我,这个问题的正确方法是什么?解析?或其他什么?
谢谢!
答案 0 :(得分:0)
对于您想要的输出,这些命令将起作用:
在:
上拆分后,从第一行打印第一个字段:
awk -F ":" '{if (NR==1) { print $1 } }' paswd.txt
jgarcia
在:
上拆分后,从第一行开始打印第二个字段:
awk -F ":" '{if (NR==1) { print $2 } }' paswd.txt
9bca3efc64b290e9ad3fa3e0add3c983
在所有行上:
分割后打印第一个字段:
awk -F ":" '{ print $1 }' paswd.txt
jgarcia
tanastsio
dbyrne
在第一行:
上拆分后打印第一个和第二个字段:
awk -F ":" '{if (NR==1) { print $1" "$2 } }' paswd.txt
jgarcia 9bca3efc64b290e9ad3fa3e0add3c983
希望这有帮助