用sed添加到行尾

时间:2010-03-25 14:33:19

标签: bash sed

给出一个包含以下几行的纯文本文档:

c48 7.587 7.39
c49 7.508 7.345983
c50 5.8 7.543
c51 8.37454546 7.34

我需要在行结束后添加一些2个空格,所以对于每行我都会得到:

c48 7.587 7.39  def
c49 7.508 7.345983  def
c50 5.8 7.543  def
c51 8.37454546 7.34  def

我需要为成千上万的文件执行此操作。我想这可能与sed有关,但不知道如何。任何提示?对于这种情况,你能否给我一些关于教程或表格的链接?

由于

2 个答案:

答案 0 :(得分:14)

如果您的所有文件都在一个目录中

sed -i.bak 's/$/  def/' *.txt

做递归(GNU find)

find /path -type f -iname '*.txt' -exec sed -i.bak 's/$/  def/' "{}" +;

您可以看到here了解sed的介绍

您可以使用的其他方式,

awk

for file in *
do
  awk '{print $0" def"}' $file >temp
  mv temp "$file"
done 

Bash shell

for file in *
do
  while read -r line
  do
      echo "$line def"
  done < $file >temp
  mv temp $file
done

答案 1 :(得分:3)

for file in ${thousands_of_files} ; do
    sed -i ".bak" -e "s/$/  def/" file
done

这里的关键是搜索和替换s///命令。在这里,我们用2个空格和你的字符串替换行$的结尾。

http://sed.sourceforge.net/#docs

找到sed文档