我有一个csv文件列表,并希望使用for循环来编辑每个文件的内容。我想用sed这样做。我有这个sed命令在一个文件上测试它时工作正常:
sed 's/[ "-]//g'
所以现在我想对文件夹中的每个文件执行此命令。我试过这个,但到目前为止没有运气:
for i in *.csv; do sed 's/[ "-]//g' > $i.csv; done
我希望他能用sed执行的编辑覆盖每个文件。 sed命令删除所有空格,“和' - '字符。
答案 0 :(得分:1)
小变化,
for i in *.csv
do
sed -i 's/[ "-]//g' "$i"
done
<强>更改强>
当您遍历for
时,您会在$i
中获取文件名,例如one.csv
,two.csv
等。您可以直接使用这些作为输入sed
命令。
-i
对于内联更改,sed将执行替换并为您更新文件。无需输出重定向。
在您编写的代码中,我猜您错过了sed
命令的任何输入
答案 1 :(得分:0)
在我的情况下,我想替换多个文本文件的每一行中特定字符串的第一次出现,我使用了以下内容:
//want to replace 16 with 1 in each files only for the first occurance
sed -i 's/16/1/' *.txt
在你的情况下,在终端你可以试试这个
sed 's/[ "-]//g' *.csv