如果我想转换 -
字符之后的文本部分,比如
我可以使用 tr
命令吗?
使用此命令将函数应用于所有文本
cat file.txt | tr [: upper:] [: lower:]
01103I-GG102
01103I-GG102
01103I-GG102
01103I-GG102
01103I-HH'2
01103I-HH'2
01103I-HH'2
01103I-HH'2
01103I-HH'2
01103I-HH'2
01103I-HH'2
01103I-HH'2
01103I-HH'3
01103I-HH'12
01103I-HH'12
01103I-HH'12
01103I-HH'12
01103I-HH'12
01103I-HH'12
01103I-HH'12
01103I-HH'22
01103I-HH'22
01103I-HH'22
01103I-HH'42
01103I-HH'42
01103I-HH'42
01103I-HH'42
01103I-HH'42
01103I-HH'42
01103I-HH'43
01103I-GG62
01103I-GG62
01103I-GG62
01103I-GG62
01103I-GG62
01103I-GG62
01103I-GG62
01103I-GG62
01103I-GG63
01103I-GG63
01103I-GG63
01103I-GG63
01103I-GG63
01103I-GG63
01103I-GG63
01103I-GG52
你能帮帮我吗?
谢谢
最佳答案
如果我是你,我会选择 sed
解决方案。以下 sed 命令确实按照您的帖子中的要求转换您的输入文件(在 -
之后变为小写)
$ sed 's/\(.*\)-\(.*\)/\1-\L\2/g' file
01103I-gg102
01103I-gg102
01103I-gg102
01103I-gg102
01103I-hh'2
01103I-hh'2
01103I-hh'2
01103I-hh'2
01103I-hh'2
01103I-hh'2
01103I-hh'2
01103I-hh'2
01103I-hh'3
01103I-hh'12
01103I-hh'12
01103I-hh'12
01103I-hh'12
01103I-hh'12
01103I-hh'12
01103I-hh'12
01103I-hh'22
01103I-hh'22
01103I-hh'22
01103I-hh'42
01103I-hh'42
01103I-hh'42
01103I-hh'42
01103I-hh'42
01103I-hh'42
01103I-hh'43
01103I-gg62
01103I-gg62
01103I-gg62
01103I-gg62
01103I-gg62
01103I-gg62
01103I-gg62
01103I-gg62
01103I-gg63
01103I-gg63
01103I-gg63
01103I-gg63
01103I-gg63
01103I-gg63
01103I-gg63
01103I-gg52
解释:
-
s/\(.*\)-\(.*\)/\1-\L\2/g
您在替换模式下使用 sed 并捕获-
周围的 2 个组,然后使用反向引用作为替换并使用-
将第二组(包含\L
之后的模式)转换为小写选项。
tr
用法:
如果你确定你只有H
和 G
在每行的第二部分并且它们没有出现在第一部分那么你可以想象像 tr 'HG...' 'hg...'
这样的东西但这是最大的一点tr
命令可以做到。
关于linux - 命令 tr 上下提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48417037/