到目前为止,我已经能够找出如何在文件的开头添加一行,但这并不完全是我想要的。我将用一个例子来说明:
文件内容
some text at the beginning
结果
<added text> some text at the beginning
它很相似,但是我不想用它创建任何新的行…
如果可能的话,我希望用sed来做这件事。
到目前为止,我已经能够找出如何在文件的开头添加一行,但这并不完全是我想要的。我将用一个例子来说明:
文件内容
some text at the beginning
结果
<added text> some text at the beginning
它很相似,但是我不想用它创建任何新的行…
如果可能的话,我希望用sed来做这件事。
当前回答
有一个非常简单的方法:
echo "your header" > headerFile.txt
cat yourFile >> headerFile.txt
其他回答
你可以用cat -
printf '%s' "some text at the beginning" | cat - filename
别名是另一种解决方案。添加到你的init rc/ env文件:
addtail () { find . -type f ! -path "./.git/*" -exec sh -c "echo $@ >> {}" \; }
addhead () { find . -type f ! -path "./.git/*" -exec sh -c "sed -i '1s/^/$@\n/' {}" \; }
用法:
addtail "string to add at the beginning of file"
addtail "string to add at the end of file"
echo -n "text to insert " ;tac filename.txt| tac > newfilename.txt
第一个tac反向传输文件(最后一行先传输),因此“要插入的文本”出现在最后。第2个tac再次将其换行,因此插入的行位于开头,原始文件保持原始顺序。
我找到的最简单的解决方法是:
echo -n "<text to add>" | cat - myFile.txt | tee myFile.txt
注:
Remove | tee myFile.txt if you don't want to change the file contents. Remove the -n parameter if you want to append a full line. Add &> /dev/null to the end if you don't want to see the output (the generated file). This can be used to append a shebang to the file. Example: # make it executable (use u+x to allow only current user) chmod +x cropImage.ts # append the shebang echo '#''!'/usr/bin/env ts-node | cat - cropImage.ts | tee cropImage.ts &> /dev/null # execute it ./cropImage.ts myImage.png
我的观点是:
sed -i '1i /path/of/file.sh' filename
即使字符串中包含正斜杠"/"