![自动编辑文本文件](https://linux22.com/image/1205211/%E8%87%AA%E5%8A%A8%E7%BC%96%E8%BE%91%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6.png)
首先,我要说的是,我一直在自学 Linux,但我还不是“技术”专家。我正在使用 Ubuntu 18.04,发现自己使用 BASH 来创建可以运行的文件。我想做的一件事就是这个。我喜欢 ASCII 艺术。我想创建一个脚本,将我告诉它的文件(例如:)./convert moon
作为moon
包含 ASCII 艺术的文本文件。我想让脚本编辑我告诉它在文件中的每一行echo "
开头和"
结尾编辑每一行的文件。最后将语句#!/bin/bash
作为第一行。我一直在尝试不同的方法,但似乎做不到。如果这是一个 Windows BAT 文件,我这样做不会有问题。所以任何人能提供的帮助都将受到热烈欢迎...提前感谢。
答案1
记得引用特殊字符,我写的这个答案涵盖该主题。
实际上只需一个调用即可完成sed
:
<moon sed -e 's/.*/echo "&"/' -e '1s_^_#!/bin/bash\n_' >moon.bash
作为moon
输入文件,第一个表达式用“echo”替换每一行原行内容"”,第二个用 shebang 后跟换行符替换第一行的开头,并将输出存储为moon.bash
。
如果您经常使用它,我建议将其作为一个函数添加到您的~/.bashrc
文件中,例如:
ascii_convert(){ <$1 sed -e 's/.*/echo "&"/' -e '1s_^_#!/bin/bash\n_' >$1.bash ;}
(不要忘记保存文件并使用 来获取它. ~/.bashrc
)这样您就可以使用简单的方法转换任何文件:
ascii_convert moon
示例运行
$ cat moon
1
2
3
$ ascii_convert moon
$ cat moon.bash
#!/bin/bash
echo "1"
echo "2"
echo "3"