Gsub regex not working


 
Thread Tools Search this Thread
Top Forums UNIX for Dummies Questions & Answers Gsub regex not working
# 1  
Old 01-07-2013
Gsub regex not working

I have a number of files that I pass through awk/gsub.

I believe to have found a working regex and on 'test bed' sites it matches, however within gsub it does not.

Examples:
Initial data:
Code:
/Volumes/Daniel/Public/Drop Box/[sage]_Hellsing_Ultimate_OVA_-_10_[720p-AAC][4B4C84C5].mkv

gsub & regex:
Code:
gsub("\[[^\]]+\]",""

I've been able to remove mostly everything with other expressions but the first brackets "[sage]" still remain. The content within the brackets varies a lot (e.g. [SFW-sage].
I'd like to keep the script as simple as possible (one line).
# 2  
Old 01-07-2013
One way to do it is using [ and ] as field separators is:
Code:
awk -F '[]]|[[]' '{for(i=1; i<=NF; i+=2)printf("%s",$i);printf("\n")}' in

or using gsub():
Code:
awk '{gsub("[[][^]]+[]]","")}1' in

If you're using a Solaris system, use /usr/xpg4/bin/awk or nawk instead of awk.

Last edited by Don Cragun; 01-07-2013 at 11:32 PM.. Reason: provide two ways to do it
This User Gave Thanks to Don Cragun For This Post:
# 3  
Old 01-07-2013
Quote:
Originally Posted by Don Cragun
One way to do it is:
Code:
awk -F '[]]|[[]' '{for(i=1; i<=NF; i+=2)printf("%s",$i);printf("\n")}' in

If you're using a Solaris system, use /usr/xpg4/bin/awk or nawk instead of awk.
Afraid I'm running this under OS X.
awk gives me:
Code:
awk: can't open file in source line number 1

nawk is unavailable.

Edit: Your second solution works wonderfully. Thank you very much.

Last edited by unknownn; 01-07-2013 at 11:43 PM..
# 4  
Old 01-07-2013
try:
Code:
gsub("[[][^]]*]","")

# 5  
Old 01-07-2013
You didn't say what the name was for the file that contains your "initial data". Both of the scripts I provided assume that the text you want to process is in a file named in. I've tried both of them on Mac OS X Version 10.7.5. Since OS X is a Mac OS X system (not a Solaris system), use awk.
 
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk gsub not working as expected

Hi Experts, Need your kind help with gsub awk. Below is my pattern:"exec=1_host_cnt=100_dup=4_NameTag=targetSrv_500.csv","'20171122112948"," 100"," 1"," 1"," 4","400","","", " aac sample exec ""hostname=XXXXX commandline='timeout 10 openssl speed -multi 2 ; exit 0'"" ","-1","-1","1","... (6 Replies)
Discussion started by: pradyumnajpn10
6 Replies

2. Shell Programming and Scripting

How to make working this regex in perl?

Hello to all, The Regex below is supposed to match all strings except RR45. I've tested in regex101.com and it works, butwhen I try to use it with the perl command below I get the error shown. Regex=(?<=^|RR45)(?!RR45).+?(?=RR45|$) How to fix this? I'm using Cygwin. $ echo... (9 Replies)
Discussion started by: Ophiuchus
9 Replies

3. Shell Programming and Scripting

Regex not working

I am using a regex to exactly match a string abcdef as ^abcdef$. But it does'nt seem to work :( (11 Replies)
Discussion started by: gaurav99
11 Replies

4. Shell Programming and Scripting

If statement with [[ ]] and regex not working as expected

Using BASH: $ if -- ::00" ]]; then echo "true"; else echo "false"; fi false Mike (5 Replies)
Discussion started by: Michael Stora
5 Replies

5. Shell Programming and Scripting

GSUB/Regex Help

I am trying to write my gsub regex to replace a bunch of special characters with spaces, so i can split it to an array and look at each word independently. However, my regex skills are slightly lacking and I appear to be missing a quote or something here. I am trying to replace the following... (6 Replies)
Discussion started by: nitrobass24
6 Replies

6. UNIX for Dummies Questions & Answers

awk gsub(): general regex

%%%%% (9 Replies)
Discussion started by: lucasvs
9 Replies

7. Shell Programming and Scripting

matching a regex using egrep not working

Hi, I'm trying to validate if a string matches a regular expression, but it is not working. Am I missing something? Do I need to scape any of the characters? if echo 'en-GB' | egrep '({1,8})(-{1,8})*' >/dev/null; then echo Valid value fi Thanks in advance (6 Replies)
Discussion started by: skrtxao
6 Replies

8. Shell Programming and Scripting

bash with: if, elif & regex not working

Why is only hello3 being printed? There must be some kind of syntax problem because the file list definitely includes all the file extensions line by line. #!/bin/bash find '/home/myuser/folder/' -name '*.c' -type f | while read F do if ] # if the file name ends in .txt.c then ... (6 Replies)
Discussion started by: cyler
6 Replies

9. Shell Programming and Scripting

gnu sed regex grouping not working?

Hello, from the gnu sed manual, I should be able to do this: `\(REGEXP\)' Groups the inner REGEXP as a whole, this is used to: * Apply postfix operators, like `\(abcd\)*': this will search for zero or more whole sequences of `abcd', while `abcd*' ... (3 Replies)
Discussion started by: Allasso
3 Replies
Login or Register to Ask a Question