Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 在将db2 select查询输出重定向到shell脚本中的文件时获取文件中的空格_Linux_Shell_Unix_Db2_Sh - Fatal编程技术网

Linux 在将db2 select查询输出重定向到shell脚本中的文件时获取文件中的空格

Linux 在将db2 select查询输出重定向到shell脚本中的文件时获取文件中的空格,linux,shell,unix,db2,sh,Linux,Shell,Unix,Db2,Sh,Shell脚本包含以下代码: db2 -x "select trim(file_path || '/' || filename) from mytable" > $my_temp_file 文件中的输出: /path1/file1.txt /path2/file2.txt /path3/file3.txt /path4/file4.txt 即使我正在使用 command: sed -i '/^$/d' $my_temp_file 或 在脚本中执行db2命令后,该命令不起

Shell脚本包含以下代码:

db2 -x "select trim(file_path || '/' || filename) from mytable" > $my_temp_file
文件中的输出:

/path1/file1.txt


/path2/file2.txt


/path3/file3.txt


/path4/file4.txt
即使我正在使用

command: sed -i '/^$/d' $my_temp_file 

在脚本中执行db2命令后,该命令不起作用


为什么会出现这些空格,为什么没有删除这些空格?

可能文件没有您期望的换行符。 CLP将添加尾随空格,长度比您可能假设的要宽得多

另外,检查file_path或filename列中的数据是否包含换行符,并在查询中通过translate/replace将其删除

您可以对输出文件进行后处理以删除空格,也可以在SQL中限制输出字符串的宽度,或者将这两种方法结合使用

要删除后处理中的空格,请执行以下操作:

db2-x“从mytable”| sed的///g'>$my_temp_文件中选择trim(文件路径| |‘/’| |文件名)

限制SQL中输出字符串的宽度(例如,限制为80字节,有被截断的风险)。这意味着短于80的文件名将填充高达80的空格(或指定的长度)


db2-x“从mytable中选择cast(rtrim(文件路径为varchar(80))”>$my_temp_file

Hi.感谢您的回答,但正如您所说的“后处理”,即使我使用命令:sed-i'/^$/d'$my_temp_file或命令:awk'NF'$my_temp_file在脚本中的db2命令之后,这不起作用我在回答中输入的命令对我有效,我不使用-i,我也不搜索换行好的。实际上,我将通过使用循环逐个读取此文件来删除这些记录,因此,我将查找一个非空格文件…顺便说一句,谢谢你的回答。请尝试相同的方法。你能告诉我为什么在sed's///g'中g之前有两个斜杠吗?表达式要求用零(//)替换两个连续空格,全球范围内,即删除它们
command: awk 'NF' $my_temp_file