将文本添加到文本文件的开头

将文本添加到文本文件的开头

我试图在文本文件的开头添加一行文本(实际上不是文本,只是两个反斜杠)。我正在尝试以下内容,我在这个答案中找到了:在大文件的开头和结尾添加行

$ 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

第一个将在文件开头插入一个包含两个反斜杠的新行,第二个将^用两个反斜杠后跟一个\newline 替换第一行 ( ) 的开头(相同的结果)。
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

相关内容