如何只使用awk一次产生不同的值

时间:2016-02-19 00:54:51

标签: awk

我正在尝试获取

中引用的密码值

双引号和最后一个字段的用户名值,当我 尝试" sed RRp' / ^ \ s * $ / d' | awk -F'"' ' {print $ 2,$ NF}'"它需要 第二个字段正确,休息取全部输出。

  

档案内容......

# cat RRp 
echo "Aj12*$" | passwd --stdin appkll 
echo "Aj12*$" | passwd --stdin horfon  
echo "Agik14#" | passwd --stdin attino
  

虽然我用下面的方法实现了它,但我用两次awk,我们可以瘦身   它只有一次..

# sed '/^$/d'  RRp | awk -F'"'  '{print $2,  $NF}'| awk  '{print $1,$5}' | column -t
Aj12*$    appkll
AgkFR1!   horfon
Agik14#   attino
  

预期产出

Aj12*$    appkll
AgkFR1!   horfon
Agik14#   attino

2 个答案:

答案 0 :(得分:1)

$ awk -F'[" ]+' -v OFS='\t' '{print $2, $6}' file
Aj12*$  appkll
Aj12*$  horfon
Agik14# attino

或跳过空白行并假设末尾有列:

awk -F'[" ]+' 'NF{print $2, $6}' file | column -t

答案 1 :(得分:0)

awk '{gsub(/"/,"",$2);print $2 "\t" $6}' file

如果您的密码是输入文件的第2列,其中的shellter上面提到的内容应该不会包含"(例如Ag"kFR#)。

如果密码可以包含",您可以使用substr删除第2列开头和结尾的引号,如下所示:

awk '{print substr($2,2,length($2)-2) "\t" $6}' file