2016-10-25 3 views
0
awk 'length($1)==3 && length($2)==3 {print $1, $2 "\t", $5}' file.txt 

Я пытаюсь напечатать столбец только с одним символом.Awk: Сбросьте все символы, кроме белых списков, из столбца

Это может быть A или B или C или D, отрицать все остальное в $ 5.

$ 5 в file.txt является

112C 
222F 
B212 
F2334 
C23 
A123 

Я хочу выход быть

C 

B 

C 
A 

ответ

1

Чтобы удалить все символы кромеA, B, C и D из $5, используйте gsub(/[^ABCD]/, "", $5)

Применительно к вашей команде :

awk 'length($1)==3 && length($2)==3 { 
    gsub(/[^ABCD]/, "", $5); 
    print $1, $2 "\t" $5 
}' file.txt 
+0

что, если я хочу сделать это быть $ 5 и $ 6 – maria

+0

что, если я хочу сделать это с $ 5 и $ 6 тоже. Спасибо – maria

+0

Я получил его благодаря:) yippy – maria

0

AWK «Длина ($ 1) == 3 & & длина ($ 2) == 3 {матч ($ 5,/A | B | C | D /, arr); печать $ 1, $ 2 "\ т", обр [0]}»file.txt

+0

дает синтаксическую ошибку – maria