如何在 Linux 中使用 sed 命令从 json 文件中删除“\t”?

How to remove "\t" from a json file using sed command in Linux?

提问人:Test User 提问时间:10/4/2023 最后编辑:chorobaTest User 更新时间:10/4/2023 访问量:102

问:

我有包含多个“\t”的json文件,我想从json文件中删除这些字符,就像当我尝试将此json文件转换为CSV时一样,因为这些字符使我的CSV输出令人不安。

我已经多次尝试了试错法。

sed -i 's/\t//g' input.json

然后我试过了;

sed -i 's/^\t//g' input.json

然后;

sed -i 's~\t~~g' input.json

但无法从input.json文件中删除此“\t”字符。

json Linux bash sed 选项卡

评论

1赞 potong 10/4/2023
sed 's/\t//g' file删除所有制表符,将删除所有字符,并将删除文件中出现的所有字符。sed 's/\\//g' file\ sed 's/\\t//g' file\t

答:

1赞 choroba 10/4/2023 #1

反斜杠在 sed 正则表达式中很特殊。要从字面上匹配它,您需要通过在它前面加上另一个反斜杠来转义它。

echo 'a\tb' | sed 's/\\t//g'
ab

评论

1赞 stevesliva 10/5/2023
请注意,将打印,而将打印一个选项卡。 OP 的挣扎确实使 json 看起来没有选项卡,但字面意思echo '\t'\tprintf '\t'\t
0赞 Philipp 10/4/2023 #2

要从文件中删除反斜杠和“t”,可以在 Linux 中使用 sed 命令:

sed 's/\\t//g' input.json

也许,最好使用 JSON 解析器来修改 JSON 文件,而不是使用 sed:jq

jq 'gsub("\\t";"")' input.json

注意:您可以使用这两个命令中的选项就地编辑文件。-i

评论

1赞 Test User 10/5/2023
感谢菲利普的帮助,sed -i 's/\\t//g' input.json解决我的问题。