如何在下一行中将另一个字符串添加到MacOS上的特定字符串?

时间:2018-05-25 14:06:31

标签: macos sed

我正在尝试在'rest_framework',之后的文件中添加字符串'django.contrib.staticfiles',,但是当我尝试使用

之类的内容时
sed '/'django.contrib.staticfiles',/a 'rest_framework',' file

我收到错误说

  

sed:1:“/'django.contrib.static ...”:命令a期望\后跟文字

我在符号周围尝试了\的相同命令。

答案:安装gased as base MacOS sed在指定字符串下创建行时效果不佳。

3 个答案:

答案 0 :(得分:4)

在彼此内部使用单引号变得非常混乱。使用双引号保留搜索字符串的文字值。只要你没有包含$字符串的搜索/替换字符串,使用双引号应该没问题

sed "/'django.contrib.staticfiles',/a 'rest_framework'," file

显然,MacOS上sed的FreeBSD版本仍然为上述语法抛出错误,并通过安装sed并使用brew install gnu-sed运行命令来使用GNU gsed

答案 1 :(得分:2)

'rest_framework',之后

添加 'django.contrib.staticfiles',

$ echo \'django\.contrib\.staticfiles\'\, | 
  sed  "s/\('django.contrib.staticfiles',\)/\1'rest_framework',/g"
'django.contrib.staticfiles','rest_framework',

要在下一行获取'rest_framework',,请在\n之后添加\1

答案 2 :(得分:1)

关注awk也可以为您提供帮助。

awk '{gsub(/\047django.contrib.staticfiles\047\,/,"&\047" ORS "rest_framework\047,")} 1' Input_file

如果将输出保存到Input_file,请在上面的代码中添加> temp_file && mv temp_file Input_file