使用sed

时间:2016-11-16 16:10:22

标签: for-loop sed

我有一个csv文件列表,并希望使用for循环来编辑每个文件的内容。我想用sed这样做。我有这个sed命令在一个文件上测试它时工作正常:

sed 's/[ "-]//g'

所以现在我想对文件夹中的每个文件执行此命令。我试过这个,但到目前为止没有运气:

for i in *.csv; do sed 's/[ "-]//g' > $i.csv; done

我希望他能用sed执行的编辑覆盖每个文件。 sed命令删除所有空格,“和' - '字符。

2 个答案:

答案 0 :(得分:1)

小变化,

for i in *.csv
do 
    sed -i 's/[ "-]//g' "$i"
done

<强>更改

  • 当您遍历for时,您会在$i中获取文件名,例如one.csvtwo.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