我只想从所有新行中删除点字符,前提是它们以它们开头。
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