仅删除所有新行中的第一个字符的点

仅删除所有新行中的第一个字符的点

我只想从所有新行中删除点字符,前提是它们以它们开头。

example:
test.example.com
123.example.com
999.example.com
.asd.example.com
.1.1.example.com

would become:
test.example.com
123.example.com
999.example.com
asd.example.com
1.1.example.com

在 bash 中有一个简单的方法可以做到这一点吗?

答案1

这取决于您所说的“在 bash 中”的含义 - 在sed或类似的基于正则表达式的文本编辑器中执行起来很简单:

$ sed 's/^[.]//' example
test.example.com
123.example.com
999.example.com
asd.example.com
1.1.example.com

句点周围的括号阻止它具有裸露的正则表达式解释(这将删除任何单个前导字符) - 您还可以使用反斜杠转义s/^\.//使其字面意思.

答案2

让您的数据所在的文件为输入.txt

您可以使用以下命令来使用正则表达式替换文本。访问 ($ 人 sed)了解更多信息

$ sed 's/^\.//' input.txt

这将在终端输出中打印结果。

如果您愿意,可以使用以下命令将输出重定向到文件

$ sed 's/^\.//' input.txt > output.txt

相关内容