我是UNIX Shell脚本的新手.
我需要帮助从字段中删除前导和尾随空格.但我需要保留单词之间的空格.
请查看下面的数据示例和所需结果,以了解我的问题.
数据样本:
1-B48980007 |82984788|317 |ALQ| |4423271 | 0| |
I0000000000000000000245729|28887957|IL FR | | |00000000573| 0| |
I0000000000000000000245715|13822348|RPVIPPR | | |00000000298| 0| |
I0000000000000000000245721|15348717|AN BV | | |00000001526| 0| |
Run Code Online (Sandbox Code Playgroud)
期望的结果:
1-B48980007|82984788|317|ALQ||4423271|0||
I0000000000000000000245729|28887957|IL FR|||00000000573|0||
I0000000000000000000245715|13822348|RPVIPPR|||00000000298|0||
I0000000000000000000245721|15348717|AN BV|||00000001526|0||
Run Code Online (Sandbox Code Playgroud)
但是我使用以下命令得到如下输出:
sed的/*\| /\|/g'file_name> testOP
管道('|')是我文件中的分隔符.我需要删除管道前后的空格,但需要保留单词之间的空格,例如:"IL FR"和"AN BV".
1-B48980007 |82984788|317|ALQ||4423271| 0||
I0000000000000000000245729|28887957|IL FR| ||00000000573| 0||
I0000000000000000000245715|13822348|RPVIPPR| ||00000000298| 0||
I0000000000000000000245721|15348717|AN BV| ||00000001526| 0||
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
谢谢你,Savitha
Merge加入CARTESIAN总是很危险吗?
我有很多查询,成本从7到40不等,但遵循merge join cartesian执行.
当我的查询成本较低时,我是否应该真的打扰合并加入笛卡儿?
我真的需要帮助.
任何帮助是极大的赞赏.
谢谢你,Savitha
我试图使用shell脚本删除具有特定后缀(作为参数$ 1传递)的表.
如果选择父表而没有删除子表,我绕过父表并增加异常块中的计数器.
当我在sql开发人员中运行此脚本并将$ 1替换为正确的值时,它可以正常工作.但是当我运行这个shell脚本时,它会被卡住.
你能看一下,让我知道,我在shell脚本中缺少什么?
码:
#!/bin/bash
cat <<ENDDROPNEWTABS >dropnewtabs.sql
set pagesize 100
DECLARE
t_cnt NUMBER;
CURSOR C001
IS
SELECT table_name FROM user_tables WHERE table_name LIKE '%$1%';
BEGIN
BEGIN SELECT COUNT(*) INTO t_cnt FROM user_tables WHERE table_name LIKE '%$1%';
END;
WHILE(t_cnt > 0) LOOP
FOR i IN C001 LOOP
BEGIN EXECUTE IMMEDIATE 'DROP TABLE '||i.table_name;
EXCEPTION
WHEN OTHERS THEN
t_cnt := t_cnt+1;
NULL;
END;
t_cnt := t_cnt-1;
END LOOP;
END LOOP;
END;
exit
ENDDROPNEWTABS
echo "Dropping the tables created …Run Code Online (Sandbox Code Playgroud) 能告诉我有没有办法通过Sql Developer备份和恢复Oracle 9i数据库.
虽然我是开发人员并且没有DBA权限,但我被要求这样做.
谢谢,Savitha
我们可以在shell脚本中有多个SQL*PLUS连接吗?
我编写了一个shell脚本,使用SQL*PLUS的COPY命令将表的数据从一个数据库复制到另一个数据库.我没有权限创建Database Link所以,我正在使用COPY命令.
我需要复制大约50个表的数据.当数据集很小时,它会运行并复制所有表的数据.但是当数据集很大时,它会卡住,并且我会在unix机器中获得会话非活动消息.
我考虑拆分语句并将其写成如下:但我收到错误"SP2-0042:未知命令"END1" - 其余行被忽略." 和"SP2-0042:未知命令"END" - 其余行被忽略."
#!/bin/bash
export ORACLE_HOME=/ora00/app/oracle/product/9.2.0.8
export PATH=$PATH:$ORACLE_HOME/bin
args=$#
if [ $args == 1 ]
then
echo "Shell script started"
else
echo "Wrong number of arguments"
exit 1
fi
time_start=`date +%H%M%S`
echo $time_start
sqlplus -s srcUN/srcPwd@srcSID <<END1
COPY from srcUN/srcPwd@srcSID to dstUN/dstPwd@dstSID INSERT tab1 USING SELECT * FROM tab1 WHERE col1 = $1;
COPY from srcUN/srcPwd@srcSID to dstUN/dstPwd@dstSID INSERT tab2 USING SELECT * FROM tab2 WHERE col1 = $1;
END1
sqlplus -s srcUN/srcPwd@srcSID …Run Code Online (Sandbox Code Playgroud) oracle ×5
shell ×3
backup ×1
database ×1
oracle9i ×1
performance ×1
plsql ×1
sed ×1
sql-tuning ×1
sqlplus ×1