【问题标题】:What does this shell script do? What are headingcopy and linecopy? variables?这个 shell 脚本有什么作用?什么是headingcopy和linecopy?变量?
【发布时间】:2013-02-19 13:45:33
【问题描述】:

有人可以帮我理解这里发生的事情,以标题复制、行复制和 sed 开头的行,不完全理解这些标题复制或行复制的含义,因为我不认识这些命令,如果它们是变量,它们在哪里使用?...

GetReportParams|grep -iv conn|grep -v "^$"|while read DB_SCHEMA REP_IDX ORG_SHORT_NAME SQL_SCRIPT OUTPUT_FILE_NAME REPORT_NAME REPORT_TYPE OUT_FILE_EXT ORG_NAME MAIN_EMAIL BCC_EMAIL REPORT_GROUP PARAMETERS
do
  echo ======================================================================================
  export DATE=`date +%Y%m%d -d "1 day ago"`
  export OUTPUT_FILE_NAME="${OUTPUT_FILE_NAME}_$DATE.${OUT_FILE_EXT}"
  export OUTDIR=$OUTDIR_main/${ORG_SHORT_NAME}/${YEAR_MONTH}
  export SCPDIR=/$ORG_NAME/data_extracts/
  TMP_FILE_NAME="TMP_RUN_REPORT.txt" 
  echo Running report for -- $PARAMETERS
  # Remove text qualifier character
  PARAMETERSSEARCH=`echo $PARAMETERS | tr -d \'`
  HeadingCopy=`head -1 $OUTDIR_main/$MAIN_FILE_NAME | tee -a ${OUTDIR_main}/${TMP_FILE_NAME} `
  LineCopy=`grep ^"$PARAMETERSSEARCH" $OUTDIR_main/$MAIN_FILE_NAME | tee -a ${OUTDIR_main}/${TMP_FILE_NAME} ` 
  sed 's/[ \t]*$//' ${OUTDIR_main}/${TMP_FILE_NAME} > ${OUTDIR}/${OUTPUT_FILE_NAME}
  sed -i 's/[^,]*,//' ${OUTDIR}/${OUTPUT_FILE_NAME}
  #cat ${OUTDIR}/${OUTPUT_FILE_NAME}
  rm ${OUTDIR_main}/${TMP_FILE_NAME}

  rsync -a ${OUTDIR}/${OUTPUT_FILE_NAME} oracle@grnwebreports2:$SCPDIR
done

谢谢! 狮子座

【问题讨论】:

  • man headman tee 是一个好的开始;如果您仍然不明白,请阅读这些内容,然后带着具体问题回到这里。
  • 向人们推荐用户手册很有用,我想知道为什么这些类型的 cmets 不在网络上每个技术论坛的标题中,它可以通过避免几乎任何问题(如果不是全部)因为一切都在手册中:)

标签: linux bash shell


【解决方案1】:
HeadingCopy=`head -1 $OUTDIR_main/$MAIN_FILE_NAME | tee -a ${OUTDIR_main}/${TMP_FILE_NAME} `

将文件 $OUTDIR_main/$MAIN_FILE_NAME 的第一行复制到变量 HeadingCopy 并将输出重定向(附加)到文件 ${OUTDIR_main}/${TMP_FILE_NAME}

 LineCopy=`grep ^"$PARAMETERSSEARCH" $OUTDIR_main/$MAIN_FILE_NAME | tee -a ${OUTDIR_main}/${TMP_FILE_NAME} ` 

复制以变量 PARAMETERSSEARCH 和 还将输出重定向(附加)到文件 ${OUTDIR_main}/${TMP_FILE_NAME}

第二个 sed 将替换文件中从第一个字符开始的每一行数据,直到遇到“,”

【讨论】:

  • 现在获得了 sed 行。第一个删除尾随空格,第二个删除第一个逗号之前的任何内容(有效删除 csv 文件的第一个字段)谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 2013-10-20
  • 2011-04-11
  • 1970-01-01
  • 1970-01-01
  • 2012-05-31
相关资源
最近更新 更多