提问人:Test User 提问时间:10/4/2023 最后编辑:chorobaTest User 更新时间:10/4/2023 访问量:102
如何在 Linux 中使用 sed 命令从 json 文件中删除“\t”?
How to remove "\t" from a json file using sed command in Linux?
问:
我有包含多个“\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”字符。
答:
1赞
choroba
10/4/2023
#1
反斜杠在 sed 正则表达式中很特殊。要从字面上匹配它,您需要通过在它前面加上另一个反斜杠来转义它。
echo 'a\tb' | sed 's/\\t//g'
ab
评论
1赞
stevesliva
10/5/2023
请注意,将打印,而将打印一个选项卡。 OP 的挣扎确实使 json 看起来没有选项卡,但字面意思echo '\t'
\t
printf '\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解决我的问题。
评论
sed 's/\t//g' file
删除所有制表符,将删除所有字符,并将删除文件中出现的所有字符。sed 's/\\//g' file
\
sed 's/\\t//g' file
\t