in reply to need help: substitute n-th word in a line
update - Now that I think about some edge cases like apostrophes and hyphens I would change line tomy $n = 3; my $newword = NEW; my $n_minus_one = $n-1; while (<DATA>) { s/((?:\w+\s+){$n_minus_one})(\w+)/$1$newword/; print; } __DATA__ hi there everyone I am looking to substitute lots of words for new ones, but only the third word per line on each line! one one two one two three one two three four __OUTPUT__ hi there NEW I am looking to substitute lots of NEW for new ones, but only the third word per NEW on each line! one one two one two NEW one two NEW four
tos/((?:\w+\s+){$n_minus_one})(\w+)/$1$newword/;
s/((?:[\w'\-]+[^\w'\-]+){$n_minus_one})(\w+)/$1$newword/;
--
flounder
|
|---|