12-18-2007
Although Mark's is an elegant solution, there's a simpler way to do and still remain independent of filename length: use cut's field delimiter option:
f=NLL_NAM_XXXXX.XXXXXXX_1_1.txt
s=`echo $f | cut -d "_" -f3`
echo "$f -> $s"
Here, we tell cut to use underscore ("_") as the field delimiter. cut now sees the string as five fields (NLL, NAM, XXXXX.XXXXXXX, 1 and 1.txt respectively) and spits out the third.
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hi there,
I'm having some problem with UNIX scripting (ksh), perhaps somebody can help me out?
For example:
------------
Sample content of my log file (text file):
--------------------------------------
File1: ....
info_1 ...
info_2 ...
info_3 ...
File2: ....
info_1 ...
info_2 ...... (10 Replies)
Discussion started by: superHonda123
10 Replies
2. Shell Programming and Scripting
Hi,
I have a string like this
BUNDLE=/home/bob/flx/user.bun
how to extract only the the last part ie, only user.bun (2 Replies)
Discussion started by: vprasads
2 Replies
3. Shell Programming and Scripting
I need to extract the following lines from this text and put it in different files.
From xxxx@gmail.com Thu Jun 10 21:15:46 2010
Return-Path: <xxxxx@gmail.com>
X-Original-To: xxx@localhost
Delivered-To:xxxx@localhost
Received: from ubuntu (localhost )
by ubuntu (Postfix) with ESMTP... (11 Replies)
Discussion started by: waxo
11 Replies
4. Shell Programming and Scripting
Hi friends,
I want to select and use the certain part of a line. For example I have the following line
home/1245/hgdf/acsdf/myhome/afolder/H2O/endfile
how can I extract the part " /myhome/afolder/H2O/endfile "
thanks (6 Replies)
Discussion started by: rpf
6 Replies
5. Shell Programming and Scripting
I have a file with 100s of lines of text. I want to perform an extraction of this line:
Info bpzs(pid=2652) using 1000 bits
I have not been able to extract it. Should I try expr match or is there another method? This line has data both in front of and in back of it. I do not have grep -o... (5 Replies)
Discussion started by: newbie2010
5 Replies
6. Shell Programming and Scripting
Hello All,
I need to extract part of a file into a new file
My file is
Define schema xxxxxx
Insert into table
(
a
,b
,c
,d
)
values
(
1,
2,
3, (15 Replies)
Discussion started by: nnani
15 Replies
7. Shell Programming and Scripting
I have a text file, input.fasta contains some protein sequences. input.fasta is shown below.
>P02649
MKVLWAALLVTFLAGCQAKVEQAVETEPEPELRQQTEWQSGQRWELALGRFWDYLRWVQT
LSEQVQEELLSSQVTQELRALMDETMKELKAYKSELEEQLTPVAEETRARLSKELQAAQA
RLGADMEDVCGRLVQYRGEVQAMLGQSTEELRVRLASHLRKLRKRLLRDADDLQKRLAVY... (8 Replies)
Discussion started by: rahim42
8 Replies
8. UNIX for Advanced & Expert Users
Hi,
I have a string with name as 20140412-s1-Potopolive_promos_20140412. So I want to extract only Potopolive string. Could you please help me the command.
O/p : Potopolive
Thx in advance (5 Replies)
Discussion started by: lkeswar
5 Replies
9. Programming
I need to save part of a file to a different one, start and end offset bytes are provided by two counters in long format. If the difference is big, how should I do it to prevent buffer overflow in java? (7 Replies)
Discussion started by: Tribe
7 Replies
10. Shell Programming and Scripting
I have a variable and assigned the following values
***XYZ_201519_20150929140642_20150929140644_211_0_0_211
I need to read this variable from backward and stop read when I get first underscore (_)
In this scenario I should get 211
Thanks
Kris (3 Replies)
Discussion started by: mkris
3 Replies
cut(1) General Commands Manual cut(1)
Name
cut - cut out selected fields of each line of a file
Syntax
cut -clist [file1 file2...]
cut -flist [-dchar] [-s] [file1 file2...]
Description
Use the command to cut out columns from a table or fields from each line of a file. The fields as specified by list can be fixed length,
that is, character positions as on a punched card (-c option), or the length can vary from line to line and be marked with a field delim-
iter character like tab (-f option). The command can be used as a filter. If no files are given, the standard input is used.
Use to make horizontal ``cuts'' (by context) through a file, or to put files together in columns. To reorder columns in a table, use and
Options
list Specifies ranges that must be a comma-separated list of integer field numbers in increasing order. With optional - indicates
ranges as in the -o option of nroff/troff for page ranges; for example, 1,4,7; 1-3,8; -5,10 (short for 1-5,10); or 3- (short
for third through last field).
-clist Specifies character positions to be cut out. For example, -c1-72 would pass the first 72 characters of each line.
-flist Specifies the fields to be cut out. For example, -f1,7 copies the first and seventh field only. Lines with no field delim-
iters are passed through intact (useful for table subheadings), unless -s is specified.
-dchar Uses the specified character as the field delimiter. Default is tab. Space or other characters with special meaning to the
shell must be quoted. The -d option is used only in combination with the -f option, according to XPG3 and SVID2/SVID3.
-s Suppresses lines with no delimiter characters. Unless specified, lines with no delimiters are passed through untouched.
Either the -c or -f option must be specified.
Examples
Mapping of user IDs to names:
cut -d: -f1,5 /etc/passwd
To set name to the current login name for the csh shell:
set name=`who am i | cut -f1 -d" "`
To set name to the current login name for the sh, sh5, and ksh shells:
name=`who am i | cut -f1 -d" "`
Diagnostics
"line too long" A line can have no more than 511 characters or fields.
"bad list for c/f option"
Missing -c or -f option or incorrectly specified list. No error occurs if a line has fewer fields than the list calls
for.
"no fields" The list is empty.
See Also
grep(1), paste(1)
cut(1)