Unix 使用sed在特定字符串后添加一行,可以';t使其适用于涉及';(/等

Unix 使用sed在特定字符串后添加一行,可以';t使其适用于涉及';(/等,unix,awk,sed,terminal,Unix,Awk,Sed,Terminal,我正在尝试使用sed在文件中的特定字符串后添加一行。有人能帮忙吗 文件名: example.js localeData: require('react-intl/locale-data/en'), localeData: require('react-intl/locale-data/en'), messages: require('../locale/messages_en'), 既有线路: example.js localeData: require('react-intl/loca

我正在尝试使用sed在文件中的特定字符串后添加一行。有人能帮忙吗

文件名:

example.js
localeData: require('react-intl/locale-data/en'),
localeData: require('react-intl/locale-data/en'),
messages: require('../locale/messages_en'),
既有线路:

example.js
localeData: require('react-intl/locale-data/en'),
localeData: require('react-intl/locale-data/en'),
messages: require('../locale/messages_en'),
所需输出:

example.js
localeData: require('react-intl/locale-data/en'),
localeData: require('react-intl/locale-data/en'),
messages: require('../locale/messages_en'),
更新: 在某些情况下,此命令会将正在搜索的字符串替换为我希望附加的字符串。我不希望替换它:

sed 's/react-intl\/locale-data\/en/..\/locale\/messages_en/g' example.js

您可以使用
awk
使用此非正则表达式方式:

awk -v s="localeData: require('react-intl/locale-data/en')," \
    -v r="messages: require('../locale/messages_en')," '
1
index($0, s) {
   print r
}' file

使用
a
运算符在
sed
中的匹配行后插入一行:

sed '/react-intl\/locale-data\/en/a messages:   require('..\/locale\/messages_en'),' example.js

react intl\/locale data\/en
匹配一行,其中包含
react intl/locale data/en
字符串,以及
a messages:require('..\/locale\/messages_en'),
插入
messages:require('../locale/messages_en'),
右下。

更新了@anubhava no,不限于使用sed,任何不需要手动干预的命令(这是脚本的一部分)。sed只是搜索“如何在文件中的特定字符串后添加行”时的绝大多数结果。这是否回答了您的问题?