![如何将整个文件变成大写?](https://linux22.com/image/1332248/%E5%A6%82%E4%BD%95%E5%B0%86%E6%95%B4%E4%B8%AA%E6%96%87%E4%BB%B6%E5%8F%98%E6%88%90%E5%A4%A7%E5%86%99%EF%BC%9F.png)
我在另一个校园的服务器上有一个文件,里面全是小写,我需要将其全部改为大写。有没有简单的 unix 命令可以做到这一点?[我正在 PC 上使用 PuTTy,看看这是否有区别。]
它只有 4 个不同的字母(它是 DNA,所以只有 A、T、C 和 G),所以 4 个单独的搜索和替换功能也可以工作。(在 VI 或其他可通过远程访问工作的文本编辑器中。)但我不知道如何在 VI 中进行搜索和替换?
我可以将它复制到我的桌面,在本地文本编辑器中搜索并替换,然后复制回来,但最终它会充满 Windows 换行符?[我在 PC 上,远程机器是 Linux 服务器,而我需要解释 DNA 文件的程序只能处理 Unix 换行符。]
答案1
你不需要在编辑器中打开文件,就可以使用tr
它来翻译字符(手册页) 直接地:
tr '[:lower:]' '[:upper:]' < input.txt > output.txt
答案2
这将是 VI 解决方案。如果您只想将这些字符替换为大写字母
:s/[actg]/\U\0/g
对于所有角色
:s/[a-z]/\U\0/g
解释:
s
(ubstite)
[actg]
这些字符或[a-z]
范围的正则表达式。
\U\0
意思是:将匹配模式更改为大写,
g
替换所有出现的内容
答案3
我相信其他人会想出更优雅的解决方案,但由于你的字母表仅限于 4 个字母,你可以这样做
sed 's/a/A/g;s/t/T/g;s/c/C/g;s/g/G/g' <filename>
如果一切正常,您可以添加> <filename>
或sed -i ...
保存到文件
查看维基百科了解更多信息