2010-03-09 9 views
1

sed的:TOUPPER角色上的位置

sed "s/public \(.*\) get\(.*\)()/\1 \2/g" 

將transfor這

public class ChallengeTO extends AbstractTransferObject { 
     public AuthAlgorithm getAlgorithm(); 
     public long getCode(); 
     public int getIteration(); 
     public String getPublicKey(); 
     public String getSelt(); 
}; 

這個

public class ChallengeTO extends AbstractTransferObject { 
     AuthAlgorithm Algorithm; 
     long Code; 
     int Iteration; 
     String PublicKey; 
     String Selt; 
}; 

我想改變AlgorithmalgorithmPublicKeypublicKey和等等。如何將第二部分的第一個字符(\2)轉換爲小寫?

UPDATE

sed "s/public \(.*\) get\([A-Z]\)\(.*\)()/\1 \2\3/g"選擇 「我的信」 爲\2,但如果我之前放置一個\L它把太多(包括\3

回答

1

這裏是一個awk解決方案

awk ' 
$1=="public" && $3~/^get/ { 
    sub(/^get/,"",$3) 
    $3=tolower(substr($3,1,1)) substr($3,2) 
    $0="\t"$2" "$3 
}1' file 

輸出

$ cat file 
public class ChallengeTO extends AbstractTransferObject { 
     public AuthAlgorithm getAlgorithm(); 
     public long getCode(); 
     public int getIteration(); 
     public String getPublicKey(); 
     public String getSelt(); 
}; 

$ ./shell.sh 
public class ChallengeTO extends AbstractTransferObject { 
     AuthAlgorithm algorithm(); 
     long code(); 
     int iteration(); 
     String publicKey(); 
     String selt(); 
}; 

,如果你還是喜歡用sed,這裏是你的版本修改,添加\l

$ sed 's/public \(.*\) get\([A-Z]\)\(.*\)()/\1 \l\2\3/g' file 
public class ChallengeTO extends AbstractTransferObject { 
     AuthAlgorithm algorithm; 
     long code; 
     int iteration; 
     String publicKey; 
     String selt; 
}; 
+0

我相信一個sed單行應該能解決我的問題。只有當sed方式變得太複雜時,我纔會去awk。 – Notinlist 2010-03-09 12:39:19

+0

好的,所以你想要一個sed一個班輪。請參閱更新。 – ghostdog74 2010-03-09 15:17:41

1

這幾乎等同於upper- to lower-case using sed

編輯:這裏的問題/答案使用\L GNU sed擴展名。由\L開始的轉換可以由\E關閉,因此如果您將「您的信件」分解爲\2,則可以在其之前加一個\L,之後再加上\E

查看GNU sed documentation瞭解更多信息。

如果您沒有GNU擴展,您可以使用兩個單獨的sed命令來完成此操作。您可以使用y命令將與某個源字符匹配的字符更改爲相應的目標字符。這與Unix實用程序tr類似。

+0

'\ L'轉換整個休息。 'PublicKey'變成'publickey'而不是'publicKey'。用這一點信息更新問題。 +1 – Notinlist 2010-03-09 12:43:32

+0

編輯的第一部分很棒。謝謝。我很難過,我不能提供更多的觀點:-)。第二個不依賴於位置,所以對我不好。 – Notinlist 2010-03-09 19:18:39