在第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