在要发送到 shell 脚本的非常大的文件前添加字符

在要发送到 shell 脚本的非常大的文件前添加字符

我正在尝试在 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到文件。

相关内容