我想在同一个Unix目录中的所有文件中添加一个普通的纯文本行。我想在所有文件中添加一个特定关键字,并使用保存它! < KBD>瓦特 q
我确实尝试了以下脚本,但我只能在特定关键字上方添加一行或一个字,我需要在此上面添加多行
for i in *;
do sed -i 's/KEYWORD/datatoinsert\nKEYWORD/' "$i";
done
任何帮助都表示赞赏,即使有人在Python中试过这个,我也想尝试一下。
答案 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/
^
匹配行
plain text\n
替换文字
因此,您基本上找到包含keyword
的行的开头,并替换(插入)包含其自己换行符的文本plain text\n
。