我正在尝试在 31,65 Go json 文件上运行 shell 脚本。
./oetl.sh database.json
我需要在文件前后加上括号。
database.json 中的内容:
{..},{..},..
我想要的是 :
[{..},{..}..]
有没有办法在不编辑文件的情况下做到这一点?如果没有,我该如何快速编辑文件?
我知道我可以快速回应右括号:
echo "]" >> database.json
我如何添加左括号?
我不知道这是否有必要,而且我对 shell 脚本还不熟悉,但是这里是 oetl.sh 文件:
#!/bin/sh
#
# Copyright (c) 2014 Luca Garulli
#
#set current working directory
cd `dirname $0`
# resolve links - $0 may be a softlink
PRG="$0"
while [ -h "$PRG" ]; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`/"$link"
fi
done
# Get standard environment variables
PRGDIR=`dirname "$PRG"`
# Only set ORIENTDB_HOME if not already set
[ -f "$ORIENTDB_HOME"/lib/orientdb-etl-@[email protected] ] || ORIENTDB_HOME=`cd "$PRGDIR/.." ; pwd`
export ORIENTDB_HOME
# Set JavaHome if it exists
if [ -f "${JAVA_HOME}/bin/java" ]; then
JAVA=${JAVA_HOME}/bin/java
else
JAVA=java
fi
export JAVA
ORIENTDB_SETTINGS="-Djava.util.logging.config.file="$ORIENTDB_HOME/config/orientdb-client-log.properties" -Djava.awt.headless=true"
JAVA_OPTS=-Xmx512m
KEYSTORE=$ORIENTDB_HOME/config/cert/orientdb-console.ks
KEYSTORE_PASS=password
TRUSTSTORE=$ORIENTDB_HOME/config/cert/orientdb-console.ts
TRUSTSTORE_PASS=password
SSL_OPTS="-Dclient.ssl.enabled=false -Djavax.net.ssl.keyStore=$KEYSTORE -Djavax.net.ssl.keyStorePassword=$KEYSTORE_PASS -Djavax.net.ssl.trustStore=$TRUSTSTORE -Djavax.net.ssl.trustStorePassword=$TRUSTSTORE_PASS"
$JAVA -server $JAVA_OPTS $ORIENTDB_SETTINGS $SSL_OPTS -Dfile.encoding=utf-8 -Dorientdb.build.number="@BUILD@" -cp "$ORIENTDB_HOME/lib/*" com.orientechnologies.orient.etl.OETLProcessor $*
答案1
创建一个包含所需内容的新文件。对于您的情况,可以这样做:
echo "[" > database-new.json ; cat database.json >> database-new.json ; echo "]" >> database-new.json
>
是创建新文件(如果存在则清除文件)并直接stdout
指向它。>>
是附加stdout
到文件。