gpt4 book ai didi

bash - 替换文件中与 Bash 中的字符串匹配的部分行

转载 作者:行者123 更新时间:2023-11-29 09:28:26 27 4
gpt4 key购买 nike

这是我想做的:

我有一个以空格分隔的文件,我有一个整数数组。我需要在文件 (inv.txt) 的每一行中搜索数组中的每个元素。如果找到模式,我需要保留该行的前 7 个字符,并将其余的替换为“0;0;”

我对脚本编写很陌生,到目前为止我尝试过的是:(我想我有点偏离轨道了)

removing=(3199 26543)
for line in inv.txt
do
for i in "${#removing[@]}"
do
sed -i "s/${removing[$1]/c\ ${line:0,7} 0; 0;/g inv.txt
done
done

这给了我一个 sed -e expression #1 char 0: no previous regular expression我怀疑这是完成任务的最佳方法(如果它能做到的话)......感谢任何帮助,提前致谢!

编辑:我正在使用一个数组,因为它实际上包含几千个条目!我为这个场景放入的两个只是为了测试。

最佳答案

你实际上可以用一个 sed 来做到这一点(如果它支持 -r):

sed -rie '/3199|26543/s/^(.{7}).*/\1\t0;\t0;/' inv.txt

使用数组:

#!/bin/bash
removing=(3199 26543)
( IFS='|'; sed -rie "/${removing[*]}/s/^(.{7}).*/\\1\\t0;\\t0;/" inv.txt; )

关于bash - 替换文件中与 Bash 中的字符串匹配的部分行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18281233/

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