【发布时间】:2019-03-30 06:23:50
【问题描述】:
我有一个文件夹,其中包含另一组文件夹,每个文件夹都有一个 .csv 文件,需要对其进行更改。
我想查找一个特定的字符串并替换它
我的 csv 文件示例是
XX,1,2,3,4,AA,BB,5,6...
YY,5,6,7,5,CC,DD,9,10...
我希望将 AA(第 6 个位置) 替换为 "aa,bb,cc" 仅适用于第一个单词是 XX 的那些行 我希望将 CC(如果我使用分隔符,则与上一行相同,则为第 6 个位置)替换为“cc,dd,ee”,仅适用于第一个单词为 YY 的行
如何对所有文件夹进行递归搜索,并仅在 .csv 文件中搜索这些字符串并进行这些更改。
#!/bin/bash
file=test1.txt
IFS=$','
for i in `cat $file`
do
echo "the name of the file I am going to is"
echo "$i"
#add logic to look for "line beginning with XX and replace the 6th word in that line
sed -e 's/^XX.\{0\}/replacedAB/' $i
done
test1.txt 包含 .csv 文件的路径。
我正在使用 /bin/bash,我的版本是 4.1.2(1)
有什么方法可以使用 sed 或 read 命令来替换以 XX 开头的行中的字符串?
【问题讨论】:
-
你试过什么?如果我们不知道您当前解决问题的方法是什么,我们将无法帮助您提高脚本知识。您所描述的可以通过
sed或awk脚本解决。您可能想查看grymoire.com/Unix 的教程。祝你好运。 -
你能帮我从获取有 XX 的行并替换该行中的字符串来启动它吗
-
这可能过于具体,无法在任何实际场景中使用,但
sed s/XX/replacement/。 -
感谢您的回复:) 我确实了解 sed 的使用,但我不明白如何替换包含“XX”而不是字符串“XX”本身的行中的字符串跨度>
标签: bash sed replace scripting