How can I match the particular character in the string?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How can I match the particular character in the string?
# 1  
Old 07-13-2012
How can I match the particular character in the string?

Hi, I want to check out a word in the text file and generate a clear report for me to see...

The text file content:
Content:
............
20120608: [TXT 120k-130k(130k), manachan]
20120608: [TXT 120k-130k(130k), natsumi]
............
20120608: [Full TxT 120k-130k(130k), manatsu]
..........
2012031201: [TXT 350k-540k(600k)], hime]
End of the file


My expected output is:
Full TXT:
manatsu

TXT:
manachan
natsumi
hime

I got some trouble to get "TXT" and "Full TXT" now and I am not idea to sum up all the TXT info. Is it possible to generate?

Code:
#!/bin/ksh

for i in `sed -e "s/[ <tab>]*//g" record1 | grep -i 'TXT'`
	do
	 txtName=`echo $i | awk 'BEGIN {FS=","} {print $1;}'`
         if [ -n `$txtName | grep -i 'Full TXT' ]
             author=`echo $i | awk 'BEGIN {FS=","} {print $2;}'`
	     echo "Full Text: $author"
         fi
	done
  exit

but it will have an error message (red color)
grep: can't open 20120608: [Full TxT 120k-130k(130k), manatsu]

Thanks!
# 2  
Old 07-13-2012
This may require some tweak depending on your requirements and depending on how the rest of your file looks like.

Code:
awk -F"[][ ]" 'NF>4{a[$3]=(a[$3]?a[$3] RS:z) $(NF-1)}END{for(i in a) {print i":" RS a[i]}}' yourfile


Code:
awk -F"[][ ]" 'tolower($3)~/full|txt/{a[$3]=(a[$3]?a[$3] RS:z)  $(NF-1)}END{for(i in a) {print i":" RS a[i]}}' yourfile


Last edited by ctsgnb; 07-13-2012 at 05:38 AM..
# 3  
Old 07-16-2012
Thank you for your advise but i do not understand the syntax of it ...
so i do not know how to put those statements in my script
would you mind to explain more about the statements?
many thanks!
# 4  
Old 07-16-2012
Code:
# cat tst
20120608: [TXT 120k-130k(130k), manachan]
20120608: [TXT 120k-130k(130k), natsumi]
............
20120608: [Full TxT 120k-130k(130k), manatsu]
..........
2012031201: [TXT 350k-540k(600k)], hime]
# awk -F"[][ ]" 'NF>4{a[$3]=(a[$3]?a[$3] RS:z) $(NF-1)}END{for(i in a) {print i":" RS a[i]}}' tst
Full:
manatsu
TXT:
manachan
natsumi
hime
# awk -F"[][ ]" 'tolower($3)~/full|txt/{a[$3]=(a[$3]?a[$3] RS:z)  $(NF-1)}END{for(i in a) {print i":" RS a[i]}}' tst
Full:
manatsu
TXT:
manachan
natsumi
hime

awk -F"[][ ]"use the square braket as well as the space charactere as fields separator
'tolower($3)~/full<pipe>txt/According to those field separators if the third field set to lower case matches "full" or "txt"
{a[$3]=(a[$3]?a[$3] RS:z) $(NF-1)}then build associative array indexed by the value of $3 and concatenate in element a[$3] the field N-1
a[$3]?a[$3] RS:z just means : if a[$3] is true (means : is not null and not empty and not equal to zero), then assign it with itself + a record separator(new line), otherwise assign z (wich defaulty has not been assigned so its value is empty)
a[$3]=(a[$3]?a[$3] RS:z) $(NF-1)concatenate the N-1** field to the previous expression and store it into the a[$3] element
 (**)since space " " and closing square bracket "]" are record separator)
END{ once the whole input file has been processed
for(i in a) {for all index existing in array a
print i":" RS a[i]}}'Display the name of the index with ":" then new line, then the element that contains the list of concatenated entries found for that index

Last edited by ctsgnb; 07-16-2012 at 10:38 AM..
This User Gave Thanks to ctsgnb For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed searches a character string for a specified delimiter character, and returns a leading or traili

Hi, Anyone can help using SED searches a character string for a specified delimiter character, and returns a leading or trailing space/blank. Text file : "1"|"ExternalClassDEA519CF5"|"Art1" "2"|"ExternalClass563EA516C"|"Art3" "3"|"ExternalClass305ED16B8"|"Art9" ... ... ... (2 Replies)
Discussion started by: fspalero
2 Replies

2. Shell Programming and Scripting

Extracting character between 2 token - using only first match

Hello. ps -ae return I would like that the following command return 3214 echo " 3214 ? 00:00:01 acroread" | grep -o "]]]*" (5 Replies)
Discussion started by: jcdole
5 Replies

3. Shell Programming and Scripting

Match string against character class in bash

Hello, I want to check whether string has only numeric characters. The following code doesn't work for me #!/usr/local/bin/bash if ]]; then echo "true" else echo "False" fi # ./yyy '346' False # ./yyy 'aaa' False I'm searching for solution using character classes, not regex.... (5 Replies)
Discussion started by: urello
5 Replies

4. Shell Programming and Scripting

sed Character match and replace

Hello All I am struck in the issue which I want to share with all of you. What I am trying to do is For every line in a file I have to replace a particular character from the given character in a file For Example Suppose the data is 1111x2222 1111x2222 2222y3333 1111x2222 I... (4 Replies)
Discussion started by: adisky123
4 Replies

5. Shell Programming and Scripting

awk : match the string and string with the quotes :

Hi all, Here is the data file: - want to match only lan3 in the output . - not lan3:1 file : OPERATING_SYSTEM=HP-UX LOOPBACK_ADDRESS=127.0.0.1 INTERFACE_NAME="lan3" IP_ADDRESS="10.53.52.241" SUBNET_MASK="255.255.255.192" BROADCAST_ADDRESS="" INTERFACE_STATE=""... (2 Replies)
Discussion started by: rveri
2 Replies

6. Shell Programming and Scripting

How to match character with single quote?

I need to check whether first character of variable is single quote. I tried the below constructions but they are all not working (always return true) if (test `echo "$REGEXP" |cut -c1` != "'"); then echo "TRUE"; fi if (test `echo "$REGEXP" |cut -c1` != '\''); then echo "TRUE"; fi if (test... (5 Replies)
Discussion started by: urello
5 Replies

7. Shell Programming and Scripting

exact string match ; search and print match

I am trying to match a pattern exactly in a shell script. I have tried two methods awk '/\<mpath${CURR_MP}\>/{print $1 $2}' multipath perl -ne '/\bmpath${CURR_MP}\b/ and print' /var/tmp/multipath Both these methods require that I use the escape character. I am guessing that is why... (8 Replies)
Discussion started by: bash_in_my_head
8 Replies

8. Homework & Coursework Questions

character match and count

Use and complete the template provided. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: How can I count number of occurance of a single character in a file.. eg. How many '$' characters are there in account file..! 2. Relevant commands,... (1 Reply)
Discussion started by: aadi_uni
1 Replies

9. Shell Programming and Scripting

Korn: How to loop through a string character by character

If I have a string defined as: MyString=abcde echo $MyString How can I loop through it character by character? I haven't been able to find a way to index the string so that I loop through it. shew01 (10 Replies)
Discussion started by: shew01
10 Replies

10. UNIX for Dummies Questions & Answers

match a character in a line and replace

Hi, I have a file with large number of records. Sample below: 123456789QWERT2U 2 erter 987123678ZXCVB6Y 5 7689 934567123GHJKUI4O 7 - -- -- I want the 16th character in each record to be replaced with the below as follows;so 2 will become K, 6 will become O and 4 will become... (3 Replies)
Discussion started by: er_ashu
3 Replies
Login or Register to Ask a Question