awk -F\| '{print $21}' testfile | sed 's/\//\\/g' > newfile
This will grab the 21st column of a | delimited text file, replace the forward slashes "/" , with back slashes "\", and redirect the output newfile. Now, how do I get the output reinserted back into the 21st column of the original file?
OK, I have the 3 separate files, I'm just confused on how to use paste to paste them back together. The man page on paste is confusing. Got any examples?
$ cat a
This is line one of a
This is line two of a
This is line three of a
This is line four of a
$ cat b
This is line one of b
This is line two of b
This is line three of b
This is line four of b
$ cat c
This is line one of c
This is line two of c
This is line three of c
This is line four of c
$ paste -d '|' a b c > d
$ cat d
This is line one of a|This is line one of b|This is line one of c
This is line two of a|This is line two of b|This is line two of c
This is line three of a|This is line three of b|This is line three of c
This is line four of a|This is line four of b|This is line four of c
Make sure the version of awk you are using supports gsub. On Sun, you will have to use the one in /usr/xpg4/bin. I don't know about other platforms.
The -F sets the field separator to |. gsub replaces / with \ in field 21 only. print $0 will print the entire record with the modified field 21, which is what you want I think. OFS will set the field separator in your output to | as well.
You may have to direct this output to a temp file and then mv the temp file over the original, like this: