分类: LINUX
2009-05-22 16:02:36
# cat abc.txt
aaaaa
bbbbb
ccccc
例如想把"hello, world"这个字符串插入到第2行:
法1. sed -i '1ihello, world' abc.txt # 注意, sed之前较早的版本可能不支持 -i 选项直接编辑保存原始文件 "更正: 这里应该为sed -i '1a\hello, world' abc.txt, a表示在某行/某匹配行后附加(append)该字符串, i表示insert,在第一行插入该字符串,原来的第一行变成第二行"
法2. awk '{ if(NR!=2){ print $0 } else { printf "hello, world\n%s\n", $0 } }' abc.txt > abc.tmp ; mv abc.tmp abc.txt
法3. head -n 1 abc.txt > abc.tmp ; echo "hello, world" >> abc.tmp ; tail -n +2 abc.txt >> abc.tmp ; mv abc.tmp abc.txt
这里tail -n +2 file表示读取从file文件的第2行到最后一行
另外, 如果想在sed里面使用外部变量, 跟awk使用外部变量的用法基本一致, 也是'"$VALUE"', 如:
# DATE=`date +%F`
# sed -i '1i'"$DATE"'' abc.txt
chinaunix网友2009-05-22 16:10:56
basketball + linux,,wrong,, should be basketball + linux + PLMM,,wahaha