我试图在文本文件的开头添加一行文本(实际上不是文本,只是两个反斜杠)。我正在尝试以下内容,我在这个答案中找到了:在大文件的开头和结尾添加行
$ sed -i '1i\'"$\\" $Simdata.txt
但是,我似乎无法让它发挥作用。当我使用上面的内容时,我收到错误:
sed: 1: ".txt": invalid command code .
我尝试过不使用 txt 结尾,但随后出现此错误:
sed: -i may not be used with stdin
我也尝试了这行代码,我在其他地方找到了它:
$ sed -i '1i \\' Simdata.txt
sed: 1: "Simdata.txt": invalid command code S
更新:
@don_crissti,你的第一个解决方案就是我想做的。然而,它似乎并没有按预期发挥作用。
$ cat Simdata.txt
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
$ sed '1i\
> \\\\' Simdata.txt
\\abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
$ cat Simdata.txt
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
所以该文件没有更新。我不想打印该文件,而只是更新文件或打印到新文件。另外,我犯了一个愚蠢的打字错误:我实际上想添加两个正斜杠。我最终的目标如下。
我有一个如下所示的文件:
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
我想首先将 // 添加到文件的开头:
//
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
//
abcdefghijkabcdefghijk
然后在每个 // 之后添加一个唯一的名称:
// text 1
abcdefghijkabcdefghijk
// text 2
abcdefghijkabcdefghijk
// text 3
abcdefghijkabcdefghijk
并将其保存到新文件,而不更改原始文件。所以上面的问题就是为了弄清楚第一步。
答案1
您必须转义反斜杠(因此四个反斜杠将插入两个文字反斜杠):
sed '1i\
\\\\' my_text_file
或者
sed '1s/^/\\\\\n/' my_text_file
第一个将在文件开头插入一个包含两个反斜杠的新行,第二个将^
用两个反斜杠后跟一个\n
ewline 替换第一行 ( ) 的开头(相同的结果)。
和osx sed
:
sed '1s/^/\\\\\'$'\n/' mytextfile
答案2
如果您只想将两个添加\\
到文件的开头,那么这应该管用:
echo '\\' | cat - todo.txt > temp && mv temp todo.txt
答案3
echo '\\\\' > newfile.txt; cat oldfile.txt >> newfile.txt