gpt4 book ai didi

bash - 使用 bash 替换多个文件中的特定行

转载 作者:行者123 更新时间:2023-11-29 09:32:10 24 4
gpt4 key购买 nike

我刚开始接触 bash 脚本,是因为需要在 super 计算机上管理我的模拟。我目前坚持编写脚本来更改我的 pbs 文件中的特定行。

我的问题分为两个阶段。首先,我需要替换一个文本文件(另一个脚本)中的一些行,并覆盖该文件以备后用。大致思路是:

Replace lines 27, 28 and 29 of 'filename005' with 'text1=000', 'text2=005' and 'text3=010'

接下来,我想对一组带有编号后缀的文本文件递归执行此操作,编号会影响替换的文本。

到目前为止我的代码是:

#!/bin/bash
for ((i = 1; i < 10; i++))
do
let NUM=i*5
let OLD=NUM-5
let NOW=NUM
let NEW=NUM+5

let FILE=$(printf "filename%03g" $NUM)
sed "27 c\text1=$OLD" $FILE
sed "28 c\text2=$NOW" $FILE
sed "29 c\text3=$NEW" $FILE
done

我知道我的代码的最后 4 行有一些错误,我仍在研究实现 sed 的正确方法。感谢任何提示!

谢谢!CS

最佳答案

获取规范的第一行:

Replace lines 27:29 of filename005, with text1=000; text2=005; text3=010

变成:

sed -e '27,29c\
text1=000\
text2=005\
text3=010' filename005

冲洗并重复。反斜杠向 sed 表明更改仍在继续。如果您的实际数据行不需要以反斜杠结尾,您自己会更轻松。

你可以玩:

seq 1 35 |
sed -e '27,29c\
text1=000\
text2=005\
text3=010'

在不冒损坏珍贵文件的风险的情况下查看会发生什么。给定规范行,您可以编写 sed 脚本以根据规范生成 sed 脚本(尽管我很想使用 Perl 或 awk 相反;事实上,我可能会用 Perl 来完成整个工作)。

关于bash - 使用 bash 替换多个文件中的特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13189611/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com