相关疑难解决方法(0)

Bash:无法将字符串附加到现有字符串 - 它似乎会覆盖该字符串的开头

这是一个帮助我们创建 dhcpd.conf 文件的脚本。

示例输入(例如 mac-tab-;-tab-IP)

DC:D3:21:75:61:90   ;   10.25.131.17
    ;   
Run Code Online (Sandbox Code Playgroud)

预期产出

Host 27-48 { hardware ethernet DC:D3:21:75:61:90 ; fixed-address 10.25.131.17 ; }

#host 27-48 { hardware ethernet ; fixed-address ; }
Run Code Online (Sandbox Code Playgroud)

目前输出的行是这样的:

Host 27-48 { hardware ethernet 00:16:6B:C8:3D:C9 ; fixed-address 10.25.129.185
Run Code Online (Sandbox Code Playgroud)

我被困在代码中的特定行

outputLine="Host $((names[i]))-$((startingNumber+counter)) { hardware ethernet $first ; fixed-address $second"
Run Code Online (Sandbox Code Playgroud)

如果我尝试添加 ; }

outputLine="Host $((names[i]))-$((startingNumber+counter)) { hardware ethernet $first ; fixed-address $second ; }"
Run Code Online (Sandbox Code Playgroud)

我明白了:

; } 27-48 { hardware ethernet 00:16:6B:C8:3D:C9 ; fixed-address 10.25.129.185
Run Code Online (Sandbox Code Playgroud)

问题是,每当我将“;}”附加到上一行的末尾时,它就会覆盖该行的开头。我尝试了一些技巧来解决这个问题,例如将上面的行写入字符串,然后尝试附加到该字符串,但出现了同样的问题。我有一个想法将整个内容导出到一个文件,然后将文件重新加载到一个数组中,以便我可以追加,但这似乎有点矫枉过正。

for ((j=1; j<=${sizes[i]}; j++ …
Run Code Online (Sandbox Code Playgroud)

string bash line-endings

4
推荐指数
1
解决办法
656
查看次数

shell 脚本替换文件中的变量 - Sed 的 -i 选项用于就地更新时出错

这是我的test.env

RABBITMQ_HOST=127.0.0.1
RABBITMQ_PASS=1234
Run Code Online (Sandbox Code Playgroud)

我想用它test.sh 来替换 to 中的值test.env

RABBITMQ_HOST=rabbitmq1
RABBITMQ_PASS=12345
Run Code Online (Sandbox Code Playgroud)

这是我的test.sh

#!/bin/bash
echo "hello world"

RABBITMQ_HOST=rabbitmq1
RABBITMQ_PASS=12345
Deploy_path="./config/test.env"

sed -i 's/RABBITMQ_HOST=.*/RABBITMQ_HOST='$RABBITMQ_HOST'/'  $Deploy_path
sed -i 's/RABBITMQ_PASS=.*/RABBITMQ_PASS='$RABBITMQ_HOST'/'  $Deploy_path 
Run Code Online (Sandbox Code Playgroud)

但我有错误

sed: 1: "./config/test.env": invalid command code .
sed: 1: "./config/test.env": invalid command code . 
Run Code Online (Sandbox Code Playgroud)

我该如何修复它?

bash awk sed inplace-editing ex

3
推荐指数
1
解决办法
1101
查看次数

使用Awk或Sed来处理特定行末尾的语句

我有一个我命名的文件poscar1.cif,我想在此文件的特定行插入变量的内容.

例如,line 24,当前读取:

_cell_length_a
Run Code Online (Sandbox Code Playgroud)

我想添加我的变量的内容a(在我的函数中定义a=5.3827),这样该行现在读取:

_cell_length_a 5.3827
Run Code Online (Sandbox Code Playgroud)

有没有办法用sed或awk做到这一点?我正在使用bash脚本来完成此任务(不幸的是,完整的脚本太大而无法发布).

bash awk sed

2
推荐指数
1
解决办法
423
查看次数

标签 统计

bash ×3

awk ×2

sed ×2

ex ×1

inplace-editing ×1

line-endings ×1

string ×1