2016-02-19 2 views
0

Я пытаюсь получить значение пароля, который цитировал вКак использовать AWK только один раз, чтобы получить различные значения

двойных кавычек и значения имени пользователя, который последнее поле, когда я пытается «SED РРПА«/^\ S * $/d»| AWK -F '"' '{печать $ 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 
+1

@Ed - я редактировал сообщение с содержимым файла и ожидаемый результат – krock1516

+1

'AWK '{GSUB (/ "/",», $ 2), печать $ 2 "\ т" $ 6}' File' должен быть близок к тому, что вы h ave указано. Удачи. – shellter

+0

@Karn - Может ли ваш пароль в столбце 2 содержать '' 'в нем? Например, Ag" kFR #? – vk239

ответ

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 
+0

Это решение работает отлично, но мне нужно использовать 'column -t' для более приятного вывода вывода , поскольку он подавляет обе пустые строки и обеспечивает пространство между полями :-). Не могли бы вы объяснить дизайн кода. – krock1516

+1

См. Учебник awk по адресу www.grymoire.com/Unix/Awk.html. Удачи. – shellter

+0

Дизайн кода абсолютно фундаментальный awk и не сильно отличается от того, что у вас было. 'man awk', если вы не уверены в какой-либо его части. awk может тривиально подавлять пустые строки, но вы не указали в своем примере ввода/вывода в своем вопросе, чтобы у вас этого не было в ответе. Я обновлю его, чтобы пропустить пустые строки и удалить вкладку OFS, поскольку она вам не нужна, если вы переходите к столбцу. –

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

Вышеупомянутый shellter в комментарии s должен работать, если ваш пароль в столбце 2 входного файла не должен содержать " (например, Ag"kFR#).

Если пароль может содержать " вы можете использовать substr, чтобы избавиться от кавычек в начале и конце колонны 2, как показано ниже:

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

awk с gsub и substr, также принимая «|» (трубы) между выходом с ... как Ag15^# e | – krock1516

Смежные вопросы