如何解决从X列开始将文本插入文件
预期的行为(开始时为空列):
"PostgreSQL" : {
"Host" : "localhost","Port" : 5432,"Database" : "dbname","Username" : "dbuser","Password" : "dbpass",},
当我要将其插入json文件的第46行时的当前命令:
sed -i '46i "PostgreSQL" : {\n "Host" : "localhost",\n "Port" : 5432,\n "Database" : "dbname",\n "Username" : "dbuser",\n "Password" :"dbpass",\n },' file.json
在46i和“ PostgreSQL”之间的这些空格都不会对文本产生影响,而是从第一列开始。我怎样才能解决这个问题?还是有更优雅的方法达成目标?我考虑使用printf或echo,但是我必须在特定行上插入此文本。
解决方法
以我的经验,最简单的方法是使用正确的空格/格式将要插入的文本另存为文件,然后使用sed将val = ast.literal_eval(label3)
val1 = json.loads(json.dumps(val))
print(val1)
val2 = val1["class"][0]["confidence"][0]["startX"][0]["startY"][0]["endX"][0]["endY"][0]["Timestamp"][0]
df = pd.DataFrame(data=val2,columns=["class","confidence","startX","startY","EndX","EndY","Timestamp"])
print(df)
插入文件中,例如
text_to_be_inserted.txt
,
这可能对您有用(GNU sed和bash):
cat <<\! | sed -i '46{h;s/\S.*//;s/.*/cat -|sed "s#^#& #"/ep;x}' file
"PostgreSQL" : {
"Host" : "localhost","Port" : 5432,"Database" : "dbname","Username" : "dbuser","Password" : "dbpass",},!
这会将here-document插入输入文件的第46行之前,将缩进保留在第46行,并将其再增加2个空格。
要在第46行之后追加保留相同的缩进,请使用:
cat <<\! | sed -i '46{p;s/\S.*//;s/.*/cat -|sed "s#^#&#"/ep;d}' file
"PostgreSQL" : {
"Host" : "localhost",!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。