如何在unix

时间:2017-07-14 23:26:11

标签: python-2.7 shell

我想在同一个Unix目录中的所有文件中添加一个普通的纯文本行。我想在所有文件中添加一个特定关键字,并使用保存它! < KBD>瓦特 q

我确实尝试了以下脚本,但我只能在特定关键字上方添加一行或一个字,我需要在此上面添加多行

for i in *; 
do sed -i 's/KEYWORD/datatoinsert\nKEYWORD/' "$i";
done

任何帮助都表示赞赏,即使有人在Python中试过这个,我也想尝试一下。

2 个答案:

答案 0 :(得分:0)

使用bash和sed,在关键字replacement之前添加dog的内容:

$ cat test.sh
#!/usr/bin/env bash
replacement="cats\neverywhere"
sed  "s/dog/$replacement\ndog/g" "$1"

示例:

$ cat f1
one
two
dog
three

$ ./test.sh f1
one
two
cats
everywhere
dog
three

$ cat f2
dog
so close
no matter
dog
far
dog

$ ./test.sh f2
cats
everywhere
dog
so close
no matter
cats
everywhere
dog
far
cats
everywhere
dog

答案 1 :(得分:0)

不需要循环,您可以添加&#39;纯文本&#39;使用简单的sed编辑进行编辑,例如

$ sed -i '/keyword/s/^/plain text\n/' *

示例文件

$ cat file1.txt
word
keyword
rest

使用/更改示例

$ sed -i '/keyword/s/^/plain text\n/' *
$ cat file1.txt
word
plain text
keyword
rest

您可以将sed命令分解为

  • sed -i编辑文件

  • /keyword/找到包含keyword

  • 的行
  • s替换命令,例如s/find/replace/

  • ^匹配行

  • 的beginnng
  • plain text\n替换文字

因此,您基本上找到包含keyword的行的开头,并替换(插入)包含其自己换行符的文本plain text\n