linux 文本内容替换

发布网友

我来回答

3个回答

热心网友

sed -r -e 's/^/begin/g' -e 's/\s+/mid/g' -e 's/$/end/g' B > C

你的A文件中的$xxx$ 跟B文件中的值是一一对应的吗,第一个变量对第一列 第二个变量对第二列? 还是全都是随机的?追问是随机对应的。

追答脚本参数对应B文件中的列名
如上例中B文件两列分别是 第一列:ID 第二列:time ,则调用 b.sh ID time
有点复杂,算是抛砖吧

[root@puppetclient02 sh]# cat A B
begin$ID$mid$time$end
123000 10:20
123001 11:30
123000 11:31

[root@puppetclient02 sh]# cat b
#!/bin/sh
data=($*)
if [[ -f /tmp/sh/C ]]; then
rm -rf /tmp/sh/C
fi
list_num=`cat /tmp/sh/B | wc -l`
for ((i=1;i> /tmp/sh/C
head -$i /tmp/sh/B | tail -1 | tr -s " " > /tmp/sh/C.tmp
for ((j=1;j<=$#;j++))
do
d=`cut -d" " -f$j /tmp/sh/C.tmp`
sed -r -i "s/[$]${data[$((j-1))]}[$]/$d/g" C
done
done
rm -rf C.tmp

热心网友

打开文本B
:%s/^/begin
:%s/$/end
:%s/ /mid追问感谢您的回答。
不过还不是我想要的。补充一下,这个是为了要用脚本实现自动化,就是每天都会有2个文件,要做合并,人手动完成不太可行。而且模板里的$ID$、$time$,在实际中位置也不是固定的,出不出现也不是固定的,出现的时候需要替换。

热心网友

你这个问题都不清楚,写清楚了再来问吧!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com