已声明变量
var1=/home/jrajpal/sync_dir
var2=/test/
我的输入文件示例
cat test.txt
/home/jrajpal/sync_dir/ server1.example.com:/rsync/LegADC-LLG02_dst/home/jrajpal/sync_dir
/home/jrajpal/sync_dir/test/ server1.example.com:/rsync/LegADC-LLG02_dst/home/jrajpal/sync_dir/test
/home/jrajpal/sync_dir/test1/ server1.example.com:/rsync/LegADC-LLG02_dst/home/jrajpal/sync_dir/test1
sed "s#$var1#& $var2#2" /home/jrajpal/test.txt
在上面的命令中运行以搜索确切的模式并替换为之时,它将捕获所有3行并进行替换,而我只需要匹配文件中的第一行,但行尾$模式不起作用
sed "s#$var1\$#& $var2#2" /home/jrajpal/test.txt
-->此命令未按预期执行,文件输出保持不变
/home/jrajpal/sync_dir/ server1.example.com:/rsync/LegADC-LLG02_dst/home/jrajpal/sync_dir
/home/jrajpal/sync_dir/test/ server1.example.com:/rsync/LegADC-LLG02_dst/home/jrajpal/sync_dir/test
/home/jrajpal/sync_dir/test1/ server1.example.com:/rsync/LegADC-LLG02_dst/home/jrajpal/sync_dir/test1
答案 0 :(得分:3)
sed "s#$var1\$#& $var2#2"
# ^
问题是2
结尾。它告诉sed
仅替换每行中的第二个匹配项。
但是$
仅在行尾匹配,因此此模式只能在每行开头匹配一次。
换句话说,您要让sed查找每行的第二行,这没有任何意义。
sed "s#$var1\$#& $var2#"
应该修复它。