sed的问题

vv1133 2011-09-03 11:52:05
cat aa.txt
1234
2345
3456
4567
5678
7890

cat bb.txt
qwer
ttyy
sdfg
hytg
vcff
tery
iuii
gtss

现在想把aa.txt的第1-3行取出来,覆盖到bb.txt的2-4行,新的文件是cc.txt
cc.txt应该是:
qwer
1234
2345
3456
vcff
tery
iuii
gtss

这是我的程序:
#! /bin/sh
var=`sed -n "1,3p" aa.txt`
echo $var
sed -e "2,4c"${var} bb.txt > cc.txt

输出结果:
1234 2345 3456
sed: 无法读取 2345: 没有那个文件或目录
sed: 无法读取 3456: 没有那个文件或目录


变量var输出的是1234 2345 3456 而不是
1234
2345
3456

请问该如何做才能方便的实现我的要求? 谢谢
...全文
112 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
goodmrning 2011-09-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mymtom 的回复:]
用awk不是更简单?
[/Quote]

awk
mymtom 2011-09-03
  • 打赏
  • 举报
回复
用awk不是更简单?
帅得不敢出门 2011-09-03
  • 打赏
  • 举报
回复
awk '{if(NR!=FNR){if(FNR<2||FNR>4){a[FNR]=$0}} else if(NR==FNR){if(NR>=1&&NR<=3){a[NR+1]=$0}}} END{for(i=1; i<=FNR; i++) print a[i]}' aa.txt bb.txt > cc.txt
qq120848369 2011-09-03
  • 打赏
  • 举报
回复
#!/bin/bash

#Author:owenliang

awk '
{
if(1<=NR && NR<=3)
{
arrRecord[NR+1]=$0;
}
else if(NR>FNR)
{
if(2<=FNR && FNR<=4)
{
print arrRecord[FNR];
}
else
{
print $0
}
}
}' a b

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧