Question: I use the following sed command in order to replace string in CSV line 

( the condition to replace the string is to match the number in the beginning of the CSV file )

```
SERIAL_NUM=1

sed "/$SERIAL_NUM/ s//OK/g" file.csv

```

the problem is that I want to match only the number that start in the beginning of the line , 

but sed match other lines that have this number

example:

in this example I want to replace the word - STATUS to OK but only in line that start with 1 ( before the "," separator )

so I do this

```
 SERIAL_NUM=1

 more file.csv

 1,14556,43634,266,242,def,45,STATUS
 2,4345,1,43,57,24,657,SD,STATUS
 3,1,WQ,435,676,90,3,44f,STATUS

 sed -i "/$SERIAL_NUM/ s/STATUS/OK/g" file.csv

 more file.csv

 1,14556,43634,266,242,def,45,OK
 2,4345,1,43,57,24,657,SD,OK
 3,1,WQ,435,676,90,3,44f,OK

```

but sed also replace the STATUS to OK also in line 2 and line 3 ( because those lines have the number 1 ) 

please advice how to change the sed syntax in order to match only the number that start the line before the "," separator

remark - solution can be also with perl line liner or awk ,

Answer: 
You can use anchor `^` to make sure `$SERIAL_NUM` only matches at start and use `,` after that to make sure there is a comma followed by this number:

```
sed "/^$SERIAL_NUM,/s/STATUS/OK/g" file.csv

```
Since this answer was ranked fifth in the [Stackoverflow perl report](http://niceperl.blogspot.ca/2014/07/cxliii-stackoverflow-perl-report.html) but had no perl content, I thought it would be useful to add the following - instead of removing the perl tag **:-)**

```
#!/usr/bin/env perl
use strict;
use warnings; 

while(<DATA>){
  s/STATUS/OK/g if /^1\,/;
  print ;
}

__DATA__
1,14556,43634,266,242,def,45,STATUS
2,4345,1,43,57,24,657,SD,STATUS
3,1,WQ,435,676,90,3,44f,STATUS

```

or as one line:

```
perl -ne 's/STATUS/OK/g if /^1\,/;' file.csv

```