Sponsored Content
Top Forums Shell Programming and Scripting Split certain strings in a line for a specific column. Post 302914454 by bakunin on Tuesday 26th of August 2014 02:34:01 AM
Old 08-26-2014
"awk | sed" is - whatever the arguments to the commands might be - eo ipso wrong.

First, read the lines and split them into field. You say they are separated by tabs. In the following "<t>" means a literal tab, "<b>" a blank char.

Code:
field1=""
field2=""
field3=""

while IFS='<t>' read field1 field2 field3 ; do
     print - "field1: ${field1}"
     print - "field2: ${field2}"
     print - "field3: ${field3}"
     print - "----------"
done < /path/to/your/data

First, check the output! You may have to adjust your definitions maybe. If you are satisfied, add the next step: extract content from field2. We use shell variable expansion for this, see the man page of ksh for details.

Code:
field1=""
field2=""
field3=""

while IFS='<t>' read field1 field2 field3 ; do
     print - "field1: ${field1}"

     field2="${field2#?}"         # split off first character "("
     field2="${field2%%\)*}"      # split off everything after first ")"

     print - "field2: ${field2}"
     print - "field3: ${field3}"
     print - "----------"
done < /path/to/your/data

Test again. If you are still satisfied, "print" the final version:

Code:
field1=""
field2=""
field3=""

while IFS='<t>' read field1 field2 field3 ; do
     field2="${field2#?}"         # split off first character "("
     field2="${field2%%\)*}"      # split off everything after first ")"

     print - "${field1}\t${field2}\t${field3}"
done < /path/to/your/data > /path/to/your/output


I hope this helps.

bakunin
This User Gave Thanks to bakunin For This Post:
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

subtitute specific column in line

Hi All, I have problem to solve aaaa,aaaaa,aaa,aaaa,aaa,aa ,aa bbbb,bbbbbbbbb,bbbb,bbbbb ,bb to aaaa;aaaaa,aaa ;aaaa;aaa,aa ;aa bbbb;bbbbbbbbb;bbbb;bbbbb ;bb i try use sed to find and replace, but dont know how to replace specific column position. can u help me?? thx for the... (11 Replies)
Discussion started by: MomoChan
11 Replies

2. Shell Programming and Scripting

On the command line using bash, how do you split a string by column?

Input: MD5(secret.txt)= fe66cbf9d929934b09cc7e8be890522e MD5(secret2.txt)= asd123qwlkjgre5ug8je7hlt488dkr0p I want the results to look like these, respectively: MD5(secret.txt)= fe66cbf9 d929934b 09cc7e8b e890522e MD5(secret2.txt)= asd123qw lkjgre5u g8je7hlt 488dkr0p Basically, keeping... (11 Replies)
Discussion started by: teiji
11 Replies

3. Shell Programming and Scripting

Counting rows line by line from a specific column using Awk

Dear UNIX community, I would like to to count characters from a specific row and have them displayed line-by-line. I have a file called testAwk2.csv which contain the following data: rabbit penguin goat giraffe emu ostrich I would like to count in the middle row individually... (4 Replies)
Discussion started by: vnayak
4 Replies

4. Shell Programming and Scripting

Split a file into multiple files based on line numbers and first column value

Hi All I have one query,say i have a requirement like the below code should be move to diffent files whose maximum lines can be of 10 lines.Say in the below example,it consist of 14 lines. This should be moved logically using the data in the fisrt coloumn to file1 and file 2.The data of first... (2 Replies)
Discussion started by: sarav.shan
2 Replies

5. Shell Programming and Scripting

Split each column in TSV file to be new line?

My TSV looks like: Hello my name is John \t Hello world \t Have a good day! \t See you later! Is there a simple bash script that splits the tsv on tab to: Hello my name is John Hello world Have a good day! See you later! I'm really stuck, would appreciate any help! (5 Replies)
Discussion started by: pxalpine
5 Replies

6. Shell Programming and Scripting

Converting Single Column into Multiple rows, but with strings to specific tab column

Dear fellows, I need your help. I'm trying to write a script to convert a single column into multiple rows. But it need to recognize the beginning of the string and set it to its specific Column number. Each Line (loop) begins with digit (RANGE). At this moment it's kind of working, but it... (6 Replies)
Discussion started by: AK47
6 Replies

7. Shell Programming and Scripting

awk to sum a column based on duplicate strings in another column and show split totals

Hi, I have a similar input format- A_1 2 B_0 4 A_1 1 B_2 5 A_4 1 and looking to print in this output format with headers. can you suggest in awk?awk because i am doing some pattern matching from parent file to print column 1 of my input using awk already.Thanks! letter number_of_letters... (5 Replies)
Discussion started by: prashob123
5 Replies

8. Shell Programming and Scripting

Help with print out line that have different record in specific column

Input file 1: - 7367 8198 - 8225 9383 + 9570 10353 Input file 2: - 2917 3667 - 3851 4250 + 4517 6302 + 6302 6740 + 6768 7524 + 7648 8170 + 8272 8896 + 8908 9915 - 10010 ... (18 Replies)
Discussion started by: perl_beginner
18 Replies

9. Shell Programming and Scripting

Overwrite specific column in xml file with the specific column from adjacent line

I have an xml file dumped from rrd file, that I want to "patch" so the xml file doesn't contain any blank hole in the resulting graph of the rrd file. Here is the file. <!-- 2015-10-12 14:00:00 WIB / 1444633200 --> <row><v> 4.0419731265e+07 </v><v> 4.5045912770e+06... (2 Replies)
Discussion started by: rk4k
2 Replies

10. UNIX for Beginners Questions & Answers

Deletion of strings depending of the value in a specific column

Happy new year guys! I have a new question for you! Ubuntum, Bash version: 4.3.46 BashI have a csv file, composed from several columns. INPUT x1 x2 x3 x4 x5 as 10 32 T 3 sd 50 7 B 48 af 18 98 D 25 fe 75 55 P 15 I want to cancel the strings where the x2 and/or x3 values are <=10... (6 Replies)
Discussion started by: echo manolis
6 Replies
PASTE(1)						      General Commands Manual							  PASTE(1)

NAME
paste - paste multiple files together SYNOPSIS
paste [-s] [-d list] file... OPTIONS
-d Set delimiter used to separate columns to list. -s Print files sequentially, file k on line k. EXAMPLES
paste file1 file2 # Print file1 in col 1, file2 in col 2 paste -s f1 f2 # Print f1 on line 1 and f2 on line 2 paste -d : file1 file2 # Print the lines separated by a colon DESCRIPTION
Paste concatenates corresponding lines of the given input files and writes them to standard output. The lines of the different files are separated by the delimiters given with the option -s. If no list is given, a tab is substituted for every linefeed, except the last one. If end-of-file is hit on an input file, subsequent lines are empty. Suppose a set of k files each has one word per line. Then the paste output will have k columns, with the contents of file j in column j. If the -s flag is given, then the first file is on line 1, the second file on line 2, etc. In effect, -s turns the output sideways. If a list of delimiters is given, they are used in turn. The C escape sequences , , \, and are used for linefeed, tab, backslash, and the null string, respectively. PASTE(1)
All times are GMT -4. The time now is 11:04 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy