Sponsored Content
Top Forums Shell Programming and Scripting 4 column tsv file, output 1 specific column Post 302257592 by casphar on Wednesday 12th of November 2008 03:04:41 PM
Old 11-12-2008
Thanks, the tr and cut command seems to be doing the trick. I did notice a few results missed the correct entry but this may be due to bad formating in the tsv file?

thanks

Quote:
Originally Posted by joeyg
So, if your input file was slightly different, you might not get your desired results with a 'plain' awk. See below where there is a single space between the month and a number:

Code:
> cat file66c.tsv
13      Oct 1   Joe     smile
18      Jan 2   Linda   laugh
11      Nov 3   Vets    march

> cat file66c.tsv | tr "\t" "~" | cut -d"~" -f2
Oct 1
Jan 2
Nov 3

> cat file66c.tsv | awk '{print $2}'
Oct
Jan
Nov

 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Question about sort specific column and print other column at the same time !

Hi, This is my input file: ali 5 usa abc abu 4 uk bca alan 6 brazil bac pinky 10 utah sdc My desired output: pinky 10 utah sdc alan 6 brazil bac ali 5 usa abc abu 4 uk bca Based on the column two, I want to do the descending order and print out other related column at the... (3 Replies)
Discussion started by: patrick87
3 Replies

2. UNIX for Dummies Questions & Answers

Replacing a specific column of a text file with another column

I have a text file in the following format: 13412 NA06985 0 0 2 46.6432798439 4 4 4 4 13412 NA06991 NA06993 NA06985 2 48.8478948517 4 4 2 4 13412 NA06993 0 0 1 45.8022601455 4 4 2 4 13401 NA06994 0 0 1 48.780669145 4 4 4 4 13401 NA07000 0 0 2 47.7312017846 2 4 4 4 13402 NA07019... (3 Replies)
Discussion started by: evelibertine
3 Replies

3. UNIX for Dummies Questions & Answers

Replacing a specific column of a text file with another column

Hi, I have a text file in the following format: Code: 13412 NA06985 0 0 2 46.6432798439 4 4 4 4 13412 NA06991 NA06993 NA06985 2 48.8478948517 4 4 2 4 13412 NA06993 0 0 1 45.8022601455 4 4 2 4 13401 NA06994 0 0 1 48.780669145 4 4 4 4 13401 NA07000 0 0 2 47.7312017846 2 4 4 4 ... (2 Replies)
Discussion started by: evelibertine
2 Replies

4. Shell Programming and Scripting

Replace column that matches specific pattern, with column data from another file

Can anyone please help with this? I have 2 files as given below. If 2nd column of file1 has pattern foo1@a, find the matching 1st column in file2 & replace 2nd column of file1 with file2's value. file1 abc_1 foo1@a .... abc_1 soo2@a ... def_2 soo2@a .... def_2 foo1@a ........ (7 Replies)
Discussion started by: prashali
7 Replies

5. Shell Programming and Scripting

Awk: Need help replacing a specific column in a file by part of a column in another file

Hi, I have two input files as File1 : ABC:client1:project1 XYZ:client2-aa:project2 DEF:client4:proj File2 : client1:W-170:xx client2-aa:WT-04:yy client4:L-005A:zz Also, array of valid values can be hardcoded like Output : ABC:W:project1 XYZ:WT:project2 (1 Reply)
Discussion started by: aa2601
1 Replies

6. 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

7. 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

8. Shell Programming and Scripting

Counting specific column and add result in output

Hi all, I have a quick question: I have a 4 column tab-separated file. I want to count the number of times each unique value in column 2 appears and add that number in a 5th column. I have the following input file: waterline-n below-sheath-v 14.8097 A dock-n below-sheath-v ... (4 Replies)
Discussion started by: owwow14
4 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
tsv(n)																	    tsv(n)

__________________________________________________________________________________________________________________________________________________

NAME
tsv - Part of the Tcl threading extension allowing script level manipulation of data shared between threads. SYNOPSIS
package require Tcl 8.4 package require Thread ?2.6? tsv::names ?pattern? tsv::object varname element tsv::set varname element ?value? tsv::get varname element ?namedvar? tsv::unset varname ?element? tsv::exists varname element tsv::pop varname element tsv::move varname oldname newname tsv::incr varname element ?count? tsv::append varname element value ?value ...? tsv::lock varname arg ?arg ...? tsv::lappend varname element value ?value ...? tsv::linsert varname element index value ?value ...? tsv::lreplace varname element first last ?value ...? tsv::llength varname element tsv::lindex varname element ?index? tsv::lrange varname element from to tsv::lsearch varname element ?options? pattern tsv::lset varname element index ?index ...? value tsv::lpop varname element ?index? tsv::lpush varname element ?index? tsv::array set varname list tsv::array get varname ?pattern? tsv::array names varname ?pattern? tsv::array size varname tsv::array reset varname list tsv::array bind varname handle tsv::array unbind varname tsv::array isbound varname tsv::keyldel varname keylist key tsv::keylget varname keylist key ?retvar? tsv::keylkeys varname keylist ?key? tsv::keylset varname keylist key value ?key value..? _________________________________________________________________ DESCRIPTION
This section describes commands implementing thread shared variables. A thread shared variable is very similar to a Tcl array but in con- trast to a Tcl array it is created in shared memory and can be accessed from many threads at the same time. Important feature of thread shared variable is that each access to the variable is internaly protected by a mutex so script programmer does not have to take care about locking the variable himself. Thread shared variables are not bound to any thread explicitly. That means that when a thread which created any of thread shared variables exits, the variable and associated memory is not unset/reclaimed. User has to explicitly unset the variable to reclaim the memory consumed by the variable. ELEMENT COMMANDS
tsv::names ?pattern? Returns names of shared variables matching optional ?pattern? or all known variables if pattern is ommited. tsv::object varname element Creates object accessor command for the element in the shared variable varname. Using this command, one can apply most of the other shared variable commands as method functions of the element object command. The object command is automatically deleted when the element which this command is pointing to is unset. % tsv::set foo bar "A shared string" % set string [tsv::object foo bar] % $string append " appended" => A shared string appended tsv::set varname element ?value? Sets the value of the element in the shared variable varname to value and returns the value to caller. The value may be ommited, in which case the command will return the current value of the element. If the element cannot be found, error is triggered. tsv::get varname element ?namedvar? Retrieves the value of the element from the shared variable varname. If the optional argument namedvar is given, the value is stored in the named variable. Return value of the command depends of the existence of the optional argument namedvar. If the argu- ment is ommited and the requested element cannot be found in the shared array, the command triggers error. If, however, the optional argument is given on the command line, the command returns true (1) if the element is found or false (0) if the element is not found. tsv::unset varname ?element? Unsets the element from the shared variable varname. If the optional element is not given, it deletes the variable. tsv::exists varname element Checks wether the element exists in the shared variable varname and returns true (1) if it does or false (0) if it doesn't. tsv::pop varname element Returns value of the element in the shared variable varname and unsets the element, all in one atomic operation. tsv::move varname oldname newname Renames the element oldname to the newname in the shared variable varname. This effectively performs an get/unset/set sequence of operations but all in one atomic step. tsv::incr varname element ?count? Similar to standard Tcl incr command but increments the value of the element in shared variaboe varname instead of the Tcl variable. tsv::append varname element value ?value ...? Similar to standard Tcl append command but appends one or more values to the element in shared variable varname instead of the Tcl variable. tsv::lock varname arg ?arg ...? This command concatenates passed arguments and evaluates the resulting script under the internal mutex protection. During the script evaluation, the entire shared variable is locked. For shared variable commands within the script, internal locking is disabled so no deadlock can occur. It is also allowed to unset the shared variable from within the script. The shared variable is automatically created if it did not exists at the time of the first lock operation. % tsv::lock foo { tsv::lappend foo bar 1 tsv::lappend foo bar 2 puts stderr [tsv::set foo bar] tsv::unset foo } LIST COMMANDS
Those command are similar to the equivalently named Tcl command. The difference is that they operate on elements of shared arrays. tsv::lappend varname element value ?value ...? Similar to standard Tcl lappend command but appends one or more values to the element in shared variable varname instead of the Tcl variable. tsv::linsert varname element index value ?value ...? Similar to standard Tcl linsert command but inserts one or more values at the index list position in the element in the shared vari- able varname instead of the Tcl variable. tsv::lreplace varname element first last ?value ...? Similar to standard Tcl lreplace command but replaces one or more values between the first and last position in the element of the shared variable varname instead of the Tcl variable. tsv::llength varname element Similar to standard Tcl llength command but returns length of the element in the shared variable varname instead of the Tcl vari- able. tsv::lindex varname element ?index? Similar to standard Tcl lindex command but returns the value at the index list position of the element from the shared variable var- name instead of the Tcl variable. tsv::lrange varname element from to Similar to standard Tcl lrange command but returns values between from and to list positions from the element in the shared variable varname instead of the Tcl variable. tsv::lsearch varname element ?options? pattern Similar to standard Tcl lsearch command but searches the element in the shared variable varname instead of the Tcl variable. tsv::lset varname element index ?index ...? value Similar to standard Tcl lset command but sets the element in the shared variable varname instead of the Tcl variable. tsv::lpop varname element ?index? Similar to the standard Tcl lindex command but in addition to returning, it also splices the value out of the element from the shared variable varname in one atomic operation. In contrast to the Tcl lindex command, this command returns no value to the call- er. tsv::lpush varname element ?index? This command performes the opposite of the tsv::lpop command. As its counterpart, it returns no value to the caller. ARRAY COMMANDS
This command supports most of the options of the standard Tcl array command. In addition to those, it allows binding a shared variable to some persisten storage databases. Currently the only persistent option supported is the famous GNU Gdbm database. This option has to be selected during the package compilation time. The implementation provides hooks for defining other persistency layers, if needed. tsv::array set varname list Does the same as standard Tcl array set. tsv::array get varname ?pattern? Does the same as standard Tcl array get. tsv::array names varname ?pattern? Does the same as standard Tcl array names. tsv::array size varname Does the same as standard Tcl array size. tsv::array reset varname list Does the same as standard Tcl array set but it clears the varname and sets new values from the list atomically. tsv::array bind varname handle Binds the varname to the persistent storage handle. The format of the handle is <handler>:<address>. For the built-in GNU Gdbm per- sistence layer, the format of the handle is "gdbm:<path>" where <path> is the path to the Gdbm database file. tsv::array unbind varname Unbinds the shared array from its bound persistent storage. tsv::array isbound varname Returns true (1) if the shared varname is bound to some persistent storage or zero (0) if not. KEYED LIST COMMANDS
Keyed list commands are borrowed from the TclX package. Keyed lists provide a structured data type built upon standard Tcl lists. This is a functionality similar to structs in the C programming language. A keyed list is a list in which each element contains a key and value pair. These element pairs are stored as lists themselves, where the key is the first element of the list, and the value is the second. The key-value pairs are referred to as fields. This is an example of a keyed list: {{NAME {Frank Zappa}} {JOB {musician and composer}}} Fields may contain subfields; `.' is the separator character. Subfields are actually fields where the value is another keyed list. Thus the following list has the top level fields ID and NAME, and subfields NAME.FIRST and NAME.LAST: {ID 106} {NAME {{FIRST Frank} {LAST Zappa}}} There is no limit to the recursive depth of subfields, allowing one to build complex data structures. Keyed lists are constructed and accessed via a number of commands. All keyed list management commands take the name of the variable containing the keyed list as an argu- ment (i.e. passed by reference), rather than passing the list directly. tsv::keyldel varname keylist key Delete the field specified by key from the keyed list keylist in the shared variable varname. This removes both the key and the value from the keyed list. tsv::keylget varname keylist key ?retvar? Return the value associated with key from the keyed list keylist in the shared variable varname. If the optional retvar is not specified, then the value will be returned as the result of the command. In this case, if key is not found in the list, an error will result. If retvar is specified and key is in the list, then the value is returned in the variable retvar and the command returns 1 if the key was present within the list. If key isn't in the list, the command will return 0, and retvar will be left unchanged. If {} is specified for retvar, the value is not returned, allowing the Tcl programmer to determine if a key is present in a keyed list with- out setting a variable as a side-effect. tsv::keylkeys varname keylist ?key? Return the a list of the keys in the keyed list keylist in the shared variable varname. If key is specified, then it is the name of a key field who's subfield keys are to be retrieved. tsv::keylset varname keylist key value ?key value..? Set the value associated with key, in the keyed list keylist to value. If the keylist does not exists, it is created. If key is not currently in the list, it will be added. If it already exists, value replaces the existing value. Multiple keywords and values may be specified, if desired. DISCUSSION
The current implementation of thread shared variables allows for easy and convenient access to data shared between different threads. Internally, the data is stored in Tcl objects and all package commands operate on internal data representation, thus minimizing shimmering and improving performance. Special care has been taken to assure that all object data is properly locked and deep-copied when moving objects between threads. Due to the internal design of the Tcl core, there is no provision of full integration of shared variables within the Tcl syntax, unfortu- nately. All access to shared data must be performed with the supplied package commands. Also, variable traces are not supported. But even so, benefits of easy, simple and safe shared data manipulation outweights imposed limitations. CREDITS
Thread shared variables are inspired by the nsv interface found in AOLserver, a highly scalable Web server from America Online. SEE ALSO
thread, tpool, ttrace KEYWORDS
locking, synchronization, thread shared data, threads Tcl Threading 2.6 tsv(n)
All times are GMT -4. The time now is 09:39 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy