Solved

# how awk substr works and also how index works in inside substr?

Posted on 2016-10-20
79 Views
Hi Team,

i am little bit confused in in understanding the awk with substring function and also with index  which used in inside substring as below. Could anyone clearly explain me please? little bit confused :( :(

emerg1@HKLVADEDM10 ~/.ansible \$ history | tail
1953  2016-10-21 14:22:10 ls -lrt
1954  2016-10-21 14:22:19 cat screenlog.1
1955  2016-10-21 14:22:32 cd .ansible/
1956  2016-10-21 14:22:33 ls -rlt
1958  2016-10-21 14:23:07 history | grep -i ansible | awk '{print sustr(\$0,index(\$0,\$4))}'
1959  2016-10-21 14:23:07 history | grep -i ansible | awk '{print sustr(\$0,index(\$0,\$4))}'
1960  2016-10-21 14:23:35 history | grep -i ansible | awk '{print substr(\$0,index(\$0,\$4))}'
1961  2016-10-21 14:25:11 history | tail

emerg1@HKLVADEDM10 ~/.ansible \$  history | tail | awk '{print substr(\$0,index(\$0,\$4))}'
ls -lrt
cat screenlog.1
cd .ansible/
ls -rlt
history | grep -i ansible | awk '{print sustr(\$0,index(\$0,\$4))}'
history | grep -i ansible | awk '{print sustr(\$0,index(\$0,\$4))}'
history | grep -i ansible | awk '{print substr(\$0,index(\$0,\$4))}'
id gnanam
history | tail
0

LVL 12

Accepted Solution

Phil Phillips earned 250 total points
ID: 41853358
substr returns a piece of a string. First argument is the string, and the second is the character position to start at. There is also a third optional argument of how many characters to return.

Example: substr("experts", 3) returns "perts"

Example: substr("experts", 3, 2) returns "pe"

Index returns the character position within a string. When you put substr and index together, you can get the piece of a string starting with the first occurrence of another string. In your example above, it's returning the 4th field and everything after.
0

LVL 77

Assisted Solution

arnold earned 125 total points
ID: 41854838
Awk by default splits the line based on white space. The individual entries start from 1
\$0 means/represents the entire line
\$4 is the forth element

As Phil covered, the result of your awk expression is to strip out all data prior to the fourth element while printing out the rest of the line from that point.
0

LVL 26

Assisted Solution

skullnobrains earned 125 total points
ID: 41857077
yep. the whole command prints out all the commands that were run remotely using ansible ( assuming no options were given to ansible or you'd get some gibberish at the beginning of the lines ) whatever the remote host ( and possibly a few other commands containing the string 'ansible' )
0

LVL 1

Author Closing Comment

ID: 41866493
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

### Suggested Solutions

Linux  Script File Attributes 5 53
nagios monitor 3 44
CentOS 7 Installation 7 60
is my large folder zipped corrupted 4 51
SSH (Secure Shell) - Tips and Tricks As you all know SSH(Secure Shell) is a network protocol, which we use to access/transfer files securely between two networked devices. SSH was actually designed as a replacement for insecure protocols that sen…
It’s 2016. Password authentication should be dead — or at least close to dying. But, unfortunately, it has not traversed Quagga stage yet. Using password authentication is like laundering hotel guest linens with a washboard — it’s Passé.
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…
Connecting to an Amazon Linux EC2 Instance from Windows Using PuTTY.