Visit Our UNIX and Linux User Community


Combine first two words ( country name ) into one word in every line of log file with 500 records


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Combine first two words ( country name ) into one word in every line of log file with 500 records
# 1  
Old 07-23-2019
Combine first two words ( country name ) into one word in every line of log file with 500 records

Code:
United States 1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
Italy  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
India  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
south Africa  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517

output will be :
Code:
UnitedStates 1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
Italy  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
ndia  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
southAfrica  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517 


Last edited by RavinderSingh13; 07-24-2019 at 02:06 AM..
# 2  
Old 07-23-2019
Try
Code:
awk 'NF>11 {sub(/ /,"")}  1' file
UnitedStates 1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
Italy  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
India  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
southAfrica  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517

EDIT: Or, if you're unsure about the space count but know there's an IP address in the second field, try
Code:
awk '{while ($2 !~ /([0-9]*\.)[0-9]*\.[0-9]*\.[0-9]*/) sub (/ /, _)} 1' file


Last edited by RudiC; 07-23-2019 at 11:36 AM..
This User Gave Thanks to RudiC For This Post:
# 3  
Old 07-23-2019
thanks , would you please suggest me to good documents where to learn such these trick Smilie
# 4  
Old 07-24-2019
Best place to start is the AWK manual: The GNU Awk User’s Guide
Then you need lot of patience, practice, reading forums like this one and think of more than one way to solve a problem Smilie
These 2 Users Gave Thanks to balajesuri For This Post:
# 5  
Old 07-24-2019
Depending on how (and by what) you further process your data you can also do it in shell directly instead of calling awk for only that purpose:

Quote:
Originally Posted by arm
Code:
United States 1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
Italy  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
India  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
south Africa  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517

output will be :
Code:
UnitedStates 1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
Italy  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
ndia  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517
southAfrica  1.2.3.4  80  10 1563790914  1   1932454179 1.2.3.6  55517  11.1.2.1  55517 

Code:
while read f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 ; do
     if [ -n "$f12" ] ; then
          printf "%s %s %s %s %s %s %s %s %s %s %s\n" "${f1}${f2}" "$f3" "$f4" "$f5" "$f6" "$f7" "$f8" "$f9" "$f10" "$f11" "$f12"
     else
          printf "%s %s %s %s %s %s %s %s %s %s %s\n" "${f1}" "${f2}" "$f3" "$f4" "$f5" "$f6" "$f7" "$f8" "$f9" "$f10" "$f11"
     fi
done < /path/to/input

Adjust the printf-format string to fine-tune the output format.

I hope this helps.

bakunin
This User Gave Thanks to bakunin For This Post:
# 6  
Old 07-24-2019
-deleted-

Last edited by MadeInGermany; 07-24-2019 at 05:05 PM.. Reason: deleted: does not work in general
# 7  
Old 07-26-2019
thanks what about if NF is changeable , sometime might be 11 or 14 , or bigger or less so NF>11 not work my dear

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace particular words in file based on if finds another words in that line

Hi All, I need one help to replace particular words in file based on if finds another words in that file . i.e. my self is peter@king. i am staying at north sydney. we all are peter@king. How to replace peter to sham if it finds @king in any line of that file. Please help me... (8 Replies)
Discussion started by: Rajib Podder
8 Replies

2. UNIX for Advanced & Expert Users

Sort words based on word count on each line

Hi Folks :) I have a .txt file with thousands of words. I'm trying to sort the lines in order based on number of words per line. Example from: word word word word word word word word word word word word word word word word to desired output: word (2 Replies)
Discussion started by: martinsmith
2 Replies

3. Shell Programming and Scripting

Read a File line by line and split into array word by word

Hi All, Hope you guys had a wonderful weekend I have a scenario where in which I have to read a file line by line and check for few words before redirecting to a file I have searched the forum but,either those answers dint work (perhaps because of my wrong under standing of how IFS... (6 Replies)
Discussion started by: Kingcobra
6 Replies

4. Shell Programming and Scripting

Compare multiple files, identify common records and combine unique values into one file

Good morning all, I have a problem that is one step beyond a standard awk compare. I would like to compare three files which have several thousand records against a fourth file. All of them have a value in each row that is identical, and one value in each of those rows which may be duplicated... (1 Reply)
Discussion started by: nashton
1 Replies

5. Shell Programming and Scripting

Combine multiple unique lines from event log text file into one line, use PERL or AWK?

I can't decide if I should use AWK or PERL after pouring over these forums for hours today I decided I'd post something and see if I couldn't get some advice. I've got a text file full of hundreds of events in this format: Record Number : 1 Records in Seq : ... (3 Replies)
Discussion started by: Mayday22
3 Replies

6. UNIX for Advanced & Expert Users

cut words based on the word count of a line

I would like to cut words based on the word count of a line. This over here inspired me with some ideas but I wasn't able to get what I needed. https://www.unix.com/shell-programming-scripting/105841-count-words-each-line-file-using-xargs.html If the line has 6 words I would like to use this.... (8 Replies)
Discussion started by: cokedude
8 Replies

7. UNIX for Dummies Questions & Answers

Grep specific records from a file of records that are separated by an empty line

Hi everyone. I am a newbie to Linux stuff. I have this kind of problem which couldn't solve alone. I have a text file with records separated by empty lines like this: ID: 20 Name: X Age: 19 ID: 21 Name: Z ID: 22 Email: xxx@yahoo.com Name: Y Age: 19 I want to grep records that... (4 Replies)
Discussion started by: Atrisa
4 Replies

8. Shell Programming and Scripting

How to remove all words from a matching word in a line?

Hi Guys, :p I have a file like this: 2010-04-25 00:00:30,095 INFO - ]- start process U100M4 2010-04-25 00:00:30,096 DEBUG - ] -- call EJB 2010-04-25 00:00:30,709 INFO - - end processU100M4 2010-04-25 00:00:30,710 DEBUG - got message=Sorry I want to out put format. 2010-04-25... (5 Replies)
Discussion started by: ooilinlove
5 Replies

9. Shell Programming and Scripting

How to remove all words starting from a matching word in a line

Hi Guys, I have a file like this: wwwe 1 ioie ewew yyy uuu 88 erehrlk 4 ihoiwhe lkjhassad lkhsad yyy mmm 45 jhash lhasdhs lkhsdkjsn ouiyrshroi oihoihswodnw oiyhewe yyy ggg 77 I want to remove everything after "yyy" and including "yyy" from each line in the file. So I want:... (2 Replies)
Discussion started by: npatwardhan
2 Replies

10. Shell Programming and Scripting

How to replace a word with a series of words in a file

Hi, I have a Template file 'TL.body' which says as follows: "There are no <FILENAME> files on the server. " The missing file names are identified and stored in a variable. For Eg: MISSFILE="abc.txt def.txt xyz.txt" I want the values of MISSFILE variable to be replaced against... (2 Replies)
Discussion started by: brap45
2 Replies

Featured Tech Videos