求助:想用sed或awk来实现文件中的字符串替换

青春不谢 深信服 服务器端工程师  2015-06-01 01:30:37
linux服务器上有1个语言包文件language.txt,里面是一些词条(共有几百行),每行都是类似这样的 130000=Happy Children's Day。还有一个文件modify.txt,里面也是用上述格式写的词条,但是只包含需要替换的内容,等号左边的数字都不是连续的。比如,130000=Happy Teacher's Day, 150000=Happy xxx Day。如果是手动去替换,那就是在language.txt中寻找modify.txt中列出的数字,然后替换掉等号后面的字符串。但是这样太麻烦,能用脚本语言实现这个重复的工作吗?给出指令后还烦请解释一下是什么意思,多谢各位大神!
...全文
787 点赞 收藏 8
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
dyhyh5 2018-06-27
[root@localhost hns]# echo "c0:a8:02:e2:00:01"|awk 'BEGIN{FS=OFS=":"}$4="88";$5="77";$6="66"'|awk 'NR==3{print}'
c0:a8:02:88:77:66
回复
existmars 2015-06-25
引用 1 楼 Windeal 的回复:

#!/bin/sh

while read line
do
    number=`echo $line | awk -F '=' '{print $1}'`

    FS=' ''
    sed -i 's/^${num}=.*$/$line/' language.txt
done < modify.txt

number=`echo $line | awk -F '=' '{print $1}'` 这个不应该是num=`echo $line | awk -F '=' '{print $1}'`吗?
回复
nswcfd 2015-06-25
引用 3 楼 lyl2725 的回复:
join -t "=" -a 1 -j 1 file1 file2 | awk 'BEGIN{FS="="}{ if( NF > 2) print $1 "=" $3; else print $0}' 用join命令可以达到数据库中两个表之间的关联效果;谁用谁知道啊,很强大。
确实join很强大! 注意需要文件按关键字排序(默认字段1)。
回复
nswcfd 2015-06-25
#1楼的sed命令不能用单引号,因为要进行shell变量替换,此外如#4楼支持的,变量名num和number不匹配。
回复
青春不谢 2015-06-25
引用 4 楼 existmars 的回复:
[quote=引用 1 楼 Windeal 的回复:]

#!/bin/sh

while read line
do
    number=`echo $line | awk -F '=' '{print $1}'`

    FS=' ''
    sed -i 's/^${num}=.*$/$line/' language.txt
done < modify.txt

number=`echo $line | awk -F '=' '{print $1}'` 这个不应该是num=`echo $line | awk -F '=' '{print $1}'`吗? [/quote]把number改成num有什么区别吗?
回复
lyl2725 2015-06-15
join -t "=" -a 1 -j 1 file1 file2 | awk 'BEGIN{FS="="}{ if( NF > 2) print $1 "=" $3; else print $0}' 用join命令可以达到数据库中两个表之间的关联效果;谁用谁知道啊,很强大。
回复
轮子学长 2015-06-01

#!/bin/sh

while read line
do
    number=`echo $line | awk -F '=' '{print $1}'`
    FS=' '
    sed -i 's/^${num}=.*$/$line/' language.txt
done < modify.txt

回复
轮子学长 2015-06-01

#!/bin/sh

while read line
do
    number=`echo $line | awk -F '=' '{print $1}'`
    FS=' ''
    sed -i 's/^${num}=.*$/$line/' language.txt
done < modify.txt

回复
相关推荐
发帖
系统维护与使用区
创建于2007-08-27

1.9w+

社区成员

系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
申请成为版主
帖子事件
创建了帖子
2015-06-01 01:30
社区公告
暂无公告