sed:在一个位置上插入一个角色
这个 你会喜欢这个吗sed:在一个位置上插入一个角色,sed,text-processing,uppercase,lowercase,Sed,Text Processing,Uppercase,Lowercase,这个 你会喜欢这个吗 sed "s/public \(.*\) get\(.*\)()/\1 \2/g" 进入这个 public class ChallengeTO extends AbstractTransferObject { public AuthAlgorithm getAlgorithm(); public long getCode(); public int getIteration(); public String
sed "s/public \(.*\) get\(.*\)()/\1 \2/g"
进入这个
public class ChallengeTO extends AbstractTransferObject {
public AuthAlgorithm getAlgorithm();
public long getCode();
public int getIteration();
public String getPublicKey();
public String getSelt();
};
我想将算法
更改为算法
,公钥
更改为公钥
等等。如何将第二段(\2
)的第一个字符转换为小写
更新
sed“s/public\(.*)get\([A-Z]\)(.*)/\1\2\3/g”
选择“我的信”作为\2
,但如果我将\L
放在它前面,它会转换太多(包括\3
)这里有一个awk解决方案
public class ChallengeTO extends AbstractTransferObject {
AuthAlgorithm Algorithm;
long Code;
int Iteration;
String PublicKey;
String Selt;
};
输出
awk '
$1=="public" && $3~/^get/ {
sub(/^get/,"",$3)
$3=tolower( substr($3,1,1) ) substr($3,2)
$0="\t"$2" "$3
}1' file
如果您仍然喜欢sed,这里将对您的版本进行修改,添加\l
$ 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();
};
这几乎是相同的 编辑:那里的问题/答案使用
\L
GNUsed
扩展名。由\L
开始的转换可以由\E
关闭,因此如果您将“您的信”梳理成\2
,您可以在它前面放一个\L
,在它后面放一个\E
有关更多信息,请参阅
如果没有GNU扩展,可以使用两个单独的
sed
命令来实现。可以使用y
命令将与源字符之一匹配的字符更改为相应的目标字符。这类似于Unix实用程序tr
我相信sed one-liner应该可以解决我的问题。只有当sed的方式变得太复杂时,我才不会去awk。其余的都由\L
来转换<代码>公钥进入公钥
非公钥
。用这些信息更新问题+1编辑的第一部分非常棒。非常感谢。我很难过,我不能给更多的分数:-)。第二个不依赖于位置,所以对我来说不好。
$ 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;
};