anandan ramar
anandan ramar

Reputation: 47

how to discard the last field of the content of a file using awk command

how to discard the last field using awk

list.txt file contains data like below,

Ram/45/simple
Gin/Run/657/No/Sand
Ram/Hol/Sin
Tan/Tin/Bun

but I require output like below,

Ram/45
Gin/Run/657/No
Ram/Hol
Tan/Tin

tried the following command but it prints only the last field

cat list.txt |awk -F '/' '{print $(NF)}'
45
No
Hol
Tin

Upvotes: 1

Views: 22

Answers (2)

anubhava
anubhava

Reputation: 784998

This simple awk should work:

awk '{sub(/\/[^/]*$/, "")} 1' file

Ram/45
Gin/Run/657/No
Ram/Hol
Tan/Tin

Or even this simpler sed should also work:

sed 's~/[^/]*$~~' file

Ram/45
Gin/Run/657/No
Ram/Hol
Tan/Tin

Upvotes: 1

RavinderSingh13
RavinderSingh13

Reputation: 133458

With GNU awk, you could try following.

awk 'BEGIN{FS=OFS="/"} NF--' Input_file

OR with any awk try following.

awk 'BEGIN{FS=OFS="/"} match($0,/.*\//){print substr($0,RSTART,RLENGTH-1)}' Input_file

Upvotes: 1

Related Questions