将一个文本文件内容附加到其他文本文件内容时,"s"错误的未知选项 sed



在第8行的末尾,我想使用sed附加另一个文本文件的内容。

运行命令时

sed -i "8s/$/$(sed 's:/:\/:g' recentchanges.txt)/" message2.json  

我得到错误

sed: -e expression #1, char 56: unknown option to `s'

sed 's:/:\/:g' recentchanges.txt起作用,并且我按预期获得了文本文件的内容。

我的sed命令出了什么问题?让我知道是否有任何替代方法来更新相同的文件,如awk等

message2.json的内容

{
"Subject": {
"Data": "Test email sent using the AWS CLI",
"Charset": "UTF-8"
},
"Body": {
"Text": {
"Data": "This is the message body in text format.",
"Charset": "UTF-8"
},
"Html": {
"Data": "This message body contains HTML formatting. It can, for example, contain links like this one: <a class="ulink" href="http://docs.aws.amazon.com/ses/latest/DeveloperGuide" target="_blank">Amazon SES Developer Guide</a>.",
"Charset": "UTF-8"
}
}
}

====================================

recentchanges.txt的内容

Mon, 13 Apr 2020 11:49:26 +0530   User1 // Job1
Mon, 13 Apr 2020 11:18:26 +0530   User2 // Job2
Mon, 13 Apr 2020 13:03:59 +0530   User3 // Job3

========================================

预期输出

{
"Subject": {
"Data": "Test email sent using the AWS CLI",
"Charset": "UTF-8"
},
"Body": {
"Text": {
"Data": 
" Mon, 13 Apr 2020 11:49:26 +0530   User1 = Job1 n  Mon, 13 Apr 2020 11:18:26 +0530 User2 = Job2 n Mon, 13 Apr 2020 13:03:59 +053   User3 = Job3 ",
"Charset": "UTF-8"
},
"Html": {
"Data": "This message body contains HTML formatting. It can, for example, contain links like this one: <a class="ulink" href="http://docs.aws.amazon.com/ses/latest/DeveloperGuide" target="_blank">Amazon SES Developer Guide</a>.",
"Charset": "UTF-8"
}
}
}

您可以在jq本身中将//的更改为=的:

jq --arg changes "$(< recentchanges.txt)" '.Body.Text.Data = ($changes | gsub("//"; "="))' message2.json

(或者用足够新的jq代替--arg ...--rawfile changes recentchanges.txt。(

sed是用于此作业的错误工具;改为使用jq

jq --rawfile changes <(sed -e 's:/:\/:g' <recentchanges.txt) 
'.Body.Text.Data = $changes' 
<in.json >out.json

最新更新