[awk] conditional printing


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [awk] conditional printing
# 1  
Old 02-17-2015
[awk] conditional printing

Heya

I'm trying to get to know awk a bit better.
So i'm trying to get used to calls saving me a grep invocation just to get a specific part of a single line.

This said, i want to get the current screen resolution according to xrandr's output.
Code:
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
eDP1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1920x1080     60.06*+
   1400x1050     59.98  
   1280x1024     60.02  
   1280x960      60.00  
   1024x768      60.00  
   800x600       60.32    56.25  
   640x480       59.94  
HDMI1 disconnected (normal left inverted right x axis y axis)
VGA1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)

So, the desired output would be: 1920x1080

So, in a first attempt, and according to another thread, i tried to apply and started with excluding those lines not containing the asterix.
They seemed to work quite fine, just that they didnt print any output.

Code:
$ xrandr|awk 'BEGIN { ! /*/ } { next }  { printf $1 }'
$ xrandr|awk 'BEGIN { ! /\*/ } { next }  { printf $1 }'
$ xrandr|awk 'BEGIN { ! /\*#/ } { next }  { printf $1 }'
$ xrandr|awk 'BEGIN { ! /*#/ } { next }  { printf $1 }'
$ xrandr|awk 'BEGIN { ! /#*/ } { next }  { printf $1 }'
$ xrandr|awk 'BEGIN { ! /#\*/ } { next }  { printf $1 }'
$ xrandr|awk '{ ! /#\*/ } { next }  { printf $1 }'

Then i thought, maybe its better to just check if the line contain the asterix and print just that one.
Code:
$ xrandr|awk '{ /*/ }  { printf $1 }'
ScreeneDP11920x10801400x10501280x10241280x9601024x768800x600640x480HDMI1VGA1VIRTUAL1
$ xrandr|awk '{ /\*/ }  { printf $1 }'
ScreeneDP11920x10801400x10501280x10241280x9601024x768800x600640x480HDMI1VGA1VIRTUAL1

What a change, but it prints the first column from every line.

Also, playing around with: (switching && with || and \* with * and >= with == / <=)
Code:
xrandr | awk '{ NR>=1 || /\*/ }  { printf $1 }'

Didnt change much, or i missed the working combination of those.

Any ideas?
Thank you in advance.
# 2  
Old 02-17-2015
You're not too far off:
Code:
xrandr | awk '/\*/ {print $1}'
1280x1024

Don't surround the testing pattern with { } - it will become an action, then...
And, if using printf, don't forget the \n line terminator.
This User Gave Thanks to RudiC For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Multi-conditional IF - awk

I have a 6 column array with 2 million rows that looks like this: 1 1089699 rs6686003 G A g 1 1090557 rs7553429 A C c 1 1094738 rs4970362 A G a 1 1099342 rs9660710 A C c 1 1106473 rs4970420 G A a 1 1108637 rs4970421 G A g 1 1119858 rs1320565 C T c 1... (5 Replies)
Discussion started by: Geneanalyst
5 Replies

2. UNIX for Beginners Questions & Answers

Conditional Arithmetic in [g]awk

I am having a difficult time getting an awk one-liner to work correctly that runs a mathematical operation upon values in a field when matching a given criteria. I would like to subtract 1 from every value in field $6 that is greater than 12. In this particular case it is only a constant of... (3 Replies)
Discussion started by: jvoot
3 Replies

3. Shell Programming and Scripting

awk conditional output

Hello, How can I use a conditional to produce an output file that varies with respect to the contents of column #4 in the data file: Data file: 9780020080954 9.95 0.49 AS 23.3729 9780020130857 9.95 0.49 AS 23.3729 9780023001406 22.20 0.25 AOD ... (12 Replies)
Discussion started by: palex
12 Replies

4. Shell Programming and Scripting

Conditional awk

Hello All, I have a file like this: bash-3.00$ cat 1.txt 201112091147|0|1359331220|1025 201112091147|0|1359331088|1024 201112091144|0|1359331172|1025 201112091147|0|1359331220|1021 201112091149|0|1359331088|1027 201112091144|0|1359331172|1029 and a list of MSISDNs in another file... (9 Replies)
Discussion started by: EAGL€
9 Replies

5. Shell Programming and Scripting

awk conditional find

Hi, I have a file in the following format: aabbba 25.31806899 baaabb 38.21808852 cccccu 1.31819523 552258121.31818253 ffddybb 5.41815555 almcamc87561812689 223aqas5.661828345 adacaaaaaaa1821285 adacaaaaaaa1821286 smckaa 3.81828756 ada2512510c1821287 ada2522511c1821328... (4 Replies)
Discussion started by: alex2005
4 Replies

6. Shell Programming and Scripting

AWK conditional addition

I have a column of numbers $2, I would like to add 360 to all numbers that are negative. This method seems a bit convoluted, and does not work (outputs 0): BEGIN { A=sprintf("%d", $2); if(A<0) A=A+360; BIN++; } END { for(A in BIN) print... (5 Replies)
Discussion started by: chrisjorg
5 Replies

7. Shell Programming and Scripting

awk conditional assignment

Dear all, I want to use awk to read the three columns in a file called "test" and change them to ( 1.5 1.5 1.5) if any element is found to be greater than three. A part of the file is shown below: (0.478318 0.391032 -0.14054) (0.45562 0.392523 -0.121685) (0.437204 0.392811 -0.106158)... (3 Replies)
Discussion started by: mfmohdyasin
3 Replies

8. Shell Programming and Scripting

Awk Conditional

Hi Guys, i have this files: xyz20080716.log opqrs20080716.log abcdef20080716.log xyz20080717.log oprs20080717.log abcde20080717.log currentdate: 20080717.log I want to make script to zip the file for past day. Can anyone help for this? i've just learn awk scripting & still confused with... (3 Replies)
Discussion started by: icy_blu_blu
3 Replies

9. Shell Programming and Scripting

AWK - conditional cause

Hello guys, I want to make a conditional cause in the following file using awk: awk '{ if ($2 != 0) print $1, $2, $3}' test.csv > test2.csv FILE EXAMPLE = test.csv string,number,date abc,0,20050101 def,1,20060101 ghi,2,20040101 jkl,12,20090101 mno,123,20020101 ... (2 Replies)
Discussion started by: Rafael.Buria
2 Replies

10. Shell Programming and Scripting

awk conditional statement

how can i use awk or sed to do a conditional statement, so that HH:MM if MM not great than 30 , then MM=00 else MM=30 ie: 10:34 will display 10:30 10:29 will display 10:00 a=$(echo 10:34 | awk ......) Thanks in advance (10 Replies)
Discussion started by: 3Gmobile
10 Replies
Login or Register to Ask a Question