ken
ken

Reputation: 1

How to rewrite C-include headername character to lower one?

I want to lowercase all the header filenames in C-Code, but the "/" gets in the way and I can't get it to convert properly using sed and awk or grep commands.

#include statement is one line long, so I can just lowercase this part, but when I use the canonical conversion 's/before/after/', it doesn't seem to convert properly when there is a "/" in the before and after string, indicating a directory. If you try to escape with " I've tried escaping it with "" but it doesn't work. Is there any way to convert it properly?

Upvotes: 0

Views: 60

Answers (2)

ken
ken

Reputation: 1

This is my trial code on GNU. I've tried to exchange sed's separator, but it doesn't work well.

  1. textcode for exchanging the header-letter filename:test.c
    #include /A/B/INC/HEADER.h
    void main(void)    
    {
      int A,B,C,d,e,f;
     }
  1. Bash code
    #!/bin/bash
    echo "start"
    str1=$(awk "/#include/" test.c)
    echo $str1    ==> #include /A/B/INC/HEADER.h
    str2=$(echo ${str1} | tr 'A-Z' 'a-z') 
    echo $str2    ==> #include /a/b/inc/header.h
    str3='/'
    str4='s/'
    str5='g'
    str6="$str4$str1$str3$str2$str3$str5"
    ==>s/#include /A/B/INC/HEADER.h/#include /a/b/inc/header.h/g
    echo $str6
    sed -e ${str6} test.c >evi  ==> it doesn't work well

Upvotes: 0

KamilCuk
KamilCuk

Reputation: 141235

Is there any way to convert it properly?

Use some different separator.

sed 's~before~after~'

With GNU sed, you can convert it to lowercase:

sed 's~BEFORE~\L&~'

Upvotes: 1

Related Questions