在linux命令行下如何将指定的几行内容写入到一个文件中?

说白了,Linux下的sed命令是处理文本的利器,用它向文件追加内容其实很简单。
先说最重要的,sed命令的基本格式是sed [-nefri] 'command' 输入文本。
比如,把/etc/test1 文件中1 -1 0行内容写入到test2 中,你可以这样操作:sed -n '1 ,1 0 p /etc/test1 >> test2
另外一点,sed命令有几个常用选项。
比如-n,它会使用安静模式,只显示符合条件的行;-e允许你直接在指令列模式上进行sed的动作编辑;-f则是直接将sed的动作写在一个档案内;-r支持的是延伸型正规表示法的语法;-i则是直接修改读取的档案内容,而不是由萤幕输出。

还有个细节挺关键的,就是>>这个符号。
它表示追加模式,会把输出内容添加到文件末尾,而不是覆盖原有内容。

我一开始也以为sed只能用来替换或删除文本,后来发现它还能这样灵活地追加内容,真的挺有用的。
等等,还有个事,如果你不熟悉sed的正则表达式,可能会觉得有点难上手。
但一旦掌握了,你会发现它处理文本的强大能力。

所以,如果你需要向文件追加内容,sed绝对是个值得一试的工具。
不过,记得先熟悉一下它的选项和命令,这样用起来才会得心应手。

linux,在首行前添加内容

说白了,在Linux里给文件首行加内容,sed最省事,Vim适合手动,其他几个看情况。

先说最重要的,用sed命令最直接——比如去年我们跑那个监控系统日志的脚本,直接用sed -i '1 i Warning: System overload' error.log一句话搞定,几秒钟就完成,用行话说叫原子操作,其实就是直接在文件里改,不会像echo+cat那样先跑临时文件。
另外一点,Vim虽然功能多,但得手动操作光标和模式切换,比如上次给内核配置文件加注释,折腾了十分钟才弄对,说实话挺坑的。
还有个细节挺关键的,用awk的时候记得BEGIN{print "New line"}这句必须放最前面,去年测试一个数据处理脚本时,因为顺序写反了,结果新内容插到了最后一行——这个点很多人没注意。

我一开始也以为用cat命令组合起来最灵活,后来发现不对,因为当文件特别大的时候,比如几GB的系统镜像文件,先写临时文件再mv会卡半天,后来改用dd命令直接拼接才快起来。
等等,还有个事,如果你在多用户环境操作,直接用-i修改sed可能会被其他进程干掉,得加个锁机制。

建议先备份文件,sed用得最多,但Vim手动调整灵活,大文件考虑用dd+echo组合拳。

在linux中给一个文本文件写内容的方法(三种)是什么?

说实话,我最早接触Linux的时候,管文本编辑器叫"魔法棒"。
用vi删错文件然后疯狂Ctrl+z撤销,那感觉...怎么说呢,像在走钢丝。
你说的第一个方法,就是用这些编辑器(比如vim、nano)直接打开文件,然后手动改。
我有个朋友,老爱用vim写Python脚本,他常说"这玩意儿能干啥,结果他用一行代码干了我五行的活儿"。
关键是,这种办法最直观,一行一行看,改哪儿删哪儿,就像直接在纸上修改一样。

第二种种方法,重定向,有意思的是,这简直就是Linux的"潜行术"。
我以前在服务器上搞测试,老用command > file把输出丢进文件。
结果有一次手滑,把用户列表也导进日志了,当时脸都绿了。
说白了,重定向就像个管道工,把A口的水引到B口,用得好的话能省不少事,但稍微不注意,就可能把整个系统都"引水"了。
记得有次我重定向错误,结果把系统更新日志也清空了,运维大哥找我谈话那个表情,我现在还记得。

第三种用sed啊,这玩意儿简直是"文本炼金术士"。
我有个同事,写个sed脚本,几分钟改完我熬夜三天才弄好的配置文件。
他给我展示时,我盯着屏幕看了半天,最后他说:"你看,这行s/old/new/g,就像把所有旧的换成新的,是不是特酷?"不过说实话,sed这玩意儿用多了容易上头,我一哥们儿写个sed命令,自己看了三遍都没看懂,最后还得问我。
数据我记得是当时他改了大概2 00个文件,效率提升那叫一个夸张,但后来他开始写各种花式的sed命令,逐渐就成"代码艺术家"了。

块儿我没亲自跑过,像Windows环境下的批处理重定向,跟Linux那边比起来,感觉复杂不少。
数据我记得是当年我测试一个脚本,用sed替换某个服务配置,大概跑了5 0个实例,花了不到一分钟,但具体数字可能有点偏激,建议你实际跑跑看。