一个非常相似的问题可能已经被问过很多次了,例如如何在文件的第一行之前插入文本?
但所有这些解决方案都会添加一个选项卡,然后一行返回到文件的开头。我想在第一行的开头添加一个选项卡..该怎么做?
非常感谢
答案1
一种方法是,假设 shell 足够聪明,能够了解<(...)
构造,并且echo
足够聪明,知道如何处理-n
和-e
选项:
cat <(echo -ne '\t') file
或者:
( printf '\t'; cat file ) >new_file
如果您必须这样做sed
,假设您sed
足够聪明,知道\t
:
sed '1s/^/\t/' file
但这会带来更多问题,具体取决于您的sed
.它也不适用于空文件。
答案2
使用ex
POSIX 指定的。在文件开头添加制表符换行符序列,然后运行ex
的join
命令。
无论文件是否为空,这都有效,并且应该完全可移植到任何 UNIX 或 Linux 系统。
(请注意,如果文件以空文件开头,则此命令后面的内容将为制表符和换行符。从技术上讲,没有终止换行符的文件实际上不是文本文件。)
printf '0a\n\t\n.\n1j!\nx\n' | ex myfile.txt
如果您单独运行该printf
命令,您可以看到传递到的指令ex
:
$ printf '0a\n\t\n.\n1j!\nx\n'
0a
.
1j!
x
请注意,上面的空白行中有一个制表符。
答案3
sed '1 s/^/\t/' < textfile.txt