Unix替换文件中的特殊字符

Unix替换文件中的特殊字符,unix,sed,Unix,Sed,我有一个文件如下: ["2015.01.07 10:06:24 UTC","2015.01.07 10:06:34 UTC","2015.01.07 10:06:48 UTC","<a href='/jobhistory/job/job_1418436639844_231528'>job_1418436639844_231528</a>","PigLatin:agg_daily_total_searches_and_unique_searc","data_svc","ma

我有一个文件如下:

["2015.01.07 10:06:24 UTC","2015.01.07 10:06:34 UTC","2015.01.07 10:06:48 UTC","<a href='/jobhistory/job/job_1418436639844_231528'>job_1418436639844_231528</a>","PigLatin:agg_daily_total_searches_and_unique_searc","data_svc","marathon","SUCCEEDED","1","1","0","0"],
["2015.01.07 10:06:28 UTC","2015.01.07 10:06:35 UTC","2015.01.07 10:13:28 UTC","<a href='/jobhistory/job/job_1418436639844_231529'>job_1418436639844_231529</a>","EndorsementsPendingImpressionEvent-c1201ed1-fb23-4","kafkaetl","marathon","SUCCEEDED","1","1","1","1"],
[“2015.01.07 10:06:24 UTC”,“2015.01.07 10:06:34 UTC”,“2015.01.07 10:06:48 UTC”,“PigLatin:agg_daily_total_searc_and_unique_searc”,“data_svc”,“marathon”,“succeed”,“1”,“1”,“0”,“0”],
[“2015.01.07 10:06:28 UTC”、“2015.01.07 10:06:35 UTC”、“2015.01.07 10:13:28 UTC”、“背书暂停印象事件-c1201ed1-fb23-4”、“卡夫卡特尔”、“马拉松”、“成功”、“1”、“1”、“1”],

我需要分别从每行的开头和结尾删除
[
],

您可以尝试下面的sed命令

sed 's/^\[\|\],$//g' file
^
断言我们在一行的开头,
$
断言我们在一行的结尾。由于basic sed使用BRE(基本正则表达式),因此需要转义
|
符号,以便像逻辑OR运算符一样工作

例如:

$ cat ri
["2015.01.07 10:06:24 UTC","2015.01.07 10:06:34 UTC","2015.01.07 10:06:48 UTC","<a href='/jobhistory/job/job_1418436639844_231528'>job_1418436639844_231528</a>","PigLatin:agg_daily_total_searches_and_unique_searc","data_svc","marathon","SUCCEEDED","1","1","0","0"],
["2015.01.07 10:06:28 UTC","2015.01.07 10:06:35 UTC","2015.01.07 10:13:28 UTC","<a href='/jobhistory/job/job_1418436639844_231529'>job_1418436639844_231529</a>","EndorsementsPendingImpressionEvent-c1201ed1-fb23-4","kafkaetl","marathon","SUCCEEDED","1","1","1","1"],
$ sed 's/^\[\|\],$//g' ri
"2015.01.07 10:06:24 UTC","2015.01.07 10:06:34 UTC","2015.01.07 10:06:48 UTC","<a href='/jobhistory/job/job_1418436639844_231528'>job_1418436639844_231528</a>","PigLatin:agg_daily_total_searches_and_unique_searc","data_svc","marathon","SUCCEEDED","1","1","0","0"
"2015.01.07 10:06:28 UTC","2015.01.07 10:06:35 UTC","2015.01.07 10:13:28 UTC","<a href='/jobhistory/job/job_1418436639844_231529'>job_1418436639844_231529</a>","EndorsementsPendingImpressionEvent-c1201ed1-fb23-4","kafkaetl","marathon","SUCCEEDED","1","1","1","1"
$cat ri
[“2015.01.07 10:06:24 UTC”,“2015.01.07 10:06:34 UTC”,“2015.01.07 10:06:48 UTC”,“PigLatin:agg_daily_搜索总数”和“unique_searc”,“data_svc”,“marathon”,“successed”,“1”,“1”,“0”,“0”],
[“2015.01.07 10:06:28 UTC”、“2015.01.07 10:06:35 UTC”、“2015.01.07 10:13:28 UTC”、“背书暂停印象事件-c1201ed1-fb23-4”、“卡夫卡特尔”、“马拉松”、“成功”、“1”、“1”、“1”],
$sed's/^\[\\\\],$//g'ri
“2015.01.07 10:06:24 UTC”、“2015.01.07 10:06:34 UTC”、“2015.01.07 10:06:48 UTC”、“PigLatin:agg_daily_搜索总数_和_unique_searc”、“data_svc”、“marathon”、“successed”、“1”、“0”、“0”
“2015.01.07 10:06:28 UTC”、“2015.01.07 10:06:35 UTC”、“2015.01.07 10:13:28 UTC”、“背书PendingImpressionEvent-c1201ed1-fb23-4”、“卡夫卡特尔”、“马拉松”、“成功”、“1”、“1”、“1”

您可以尝试下面的sed命令

sed 's/^\[\|\],$//g' file
^
断言我们在一行的开头,
$
断言我们在一行的结尾。由于basic sed使用BRE(基本正则表达式),因此需要转义
|
符号,以便像逻辑OR运算符一样工作

例如:

$ cat ri
["2015.01.07 10:06:24 UTC","2015.01.07 10:06:34 UTC","2015.01.07 10:06:48 UTC","<a href='/jobhistory/job/job_1418436639844_231528'>job_1418436639844_231528</a>","PigLatin:agg_daily_total_searches_and_unique_searc","data_svc","marathon","SUCCEEDED","1","1","0","0"],
["2015.01.07 10:06:28 UTC","2015.01.07 10:06:35 UTC","2015.01.07 10:13:28 UTC","<a href='/jobhistory/job/job_1418436639844_231529'>job_1418436639844_231529</a>","EndorsementsPendingImpressionEvent-c1201ed1-fb23-4","kafkaetl","marathon","SUCCEEDED","1","1","1","1"],
$ sed 's/^\[\|\],$//g' ri
"2015.01.07 10:06:24 UTC","2015.01.07 10:06:34 UTC","2015.01.07 10:06:48 UTC","<a href='/jobhistory/job/job_1418436639844_231528'>job_1418436639844_231528</a>","PigLatin:agg_daily_total_searches_and_unique_searc","data_svc","marathon","SUCCEEDED","1","1","0","0"
"2015.01.07 10:06:28 UTC","2015.01.07 10:06:35 UTC","2015.01.07 10:13:28 UTC","<a href='/jobhistory/job/job_1418436639844_231529'>job_1418436639844_231529</a>","EndorsementsPendingImpressionEvent-c1201ed1-fb23-4","kafkaetl","marathon","SUCCEEDED","1","1","1","1"
$cat ri
[“2015.01.07 10:06:24 UTC”,“2015.01.07 10:06:34 UTC”,“2015.01.07 10:06:48 UTC”,“PigLatin:agg_daily_搜索总数”和“unique_searc”,“data_svc”,“marathon”,“successed”,“1”,“1”,“0”,“0”],
[“2015.01.07 10:06:28 UTC”、“2015.01.07 10:06:35 UTC”、“2015.01.07 10:13:28 UTC”、“背书暂停印象事件-c1201ed1-fb23-4”、“卡夫卡特尔”、“马拉松”、“成功”、“1”、“1”、“1”],
$sed's/^\[\\\\],$//g'ri
“2015.01.07 10:06:24 UTC”、“2015.01.07 10:06:34 UTC”、“2015.01.07 10:06:48 UTC”、“PigLatin:agg_daily_搜索总数_和_unique_searc”、“data_svc”、“marathon”、“successed”、“1”、“0”、“0”
“2015.01.07 10:06:28 UTC”、“2015.01.07 10:06:35 UTC”、“2015.01.07 10:13:28 UTC”、“背书PendingImpressionEvent-c1201ed1-fb23-4”、“卡夫卡特尔”、“马拉松”、“成功”、“1”、“1”、“1”
tr-d'[]'new\u文件
tr-d'[]'new\u文件
将所有东西都放在外部支架内,如果没有外部支架,则保持不变


将所有内容都放在外部括号内,如果没有外部括号保持不变,如果行中有更多的
[
]
怎么办?如果行中有更多的
[
]
怎么办?您可能需要
sed的s/^\[/;s/\],$/'文件,因为您正在删除最后一个
是的,op不想要尾随的
(包括逗号):/我以为这是句子中他不想删除的部分:P建议编辑您可能需要
sed的/^\[/;s/\],$/,/'文件
,因为您正在删除最后一个
是的,op不想要尾随的
(包括逗号):/I我认为这是句子的一部分,而不是他想删除的部分:P建议编辑