Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
用于文件操作的Shell脚本_Shell_Unix - Fatal编程技术网

用于文件操作的Shell脚本

用于文件操作的Shell脚本,shell,unix,Shell,Unix,我有剧本 awk -F, '$4!~/ABCDEF/{print $0}' File_Name.csv>New_File_Name.csv 这是一个脚本,如果csv列中第19个D列中的单元格由ABCDEF组成,它将删除csv文件中的整行。 这里我手动给出文件名和新文件名。我必须选择一个目录中的所有文件,然后将该文件导出到另一个目录。如何执行此操作?您可以在包含所有*csv文件的目录中运行此脚本: 为目录和另一个目录设置正确的值,然后尝试以下操作: for fname in $direct

我有剧本

awk -F, '$4!~/ABCDEF/{print $0}' File_Name.csv>New_File_Name.csv
这是一个脚本,如果csv列中第19个D列中的单元格由ABCDEF组成,它将删除csv文件中的整行。
这里我手动给出文件名和新文件名。我必须选择一个目录中的所有文件,然后将该文件导出到另一个目录。如何执行此操作?

您可以在包含所有*csv文件的目录中运行此脚本:

为目录和另一个目录设置正确的值,然后尝试以下操作:

for fname in $directory/*.csv; do awk -F, '$4!~/ABCDEF/{print $0}' $fname > $another_directory/`basename $fname`; done
您还可以将其放入脚本文件中,让其为script.sh,如下所示:

directory=$1
another_directory=$2
for fname in $directory/*.csv; do awk -F, '$4!~/ABCDEF/{print $0}' $fname > $another_directory/`basename $fname`; done
./script.sh path_to_source_directory path_to_destination_directory
使其可执行并按如下方式调用:

directory=$1
another_directory=$2
for fname in $directory/*.csv; do awk -F, '$4!~/ABCDEF/{print $0}' $fname > $another_directory/`basename $fname`; done
./script.sh path_to_source_directory path_to_destination_directory

我收到此错误,$./Check.sh./Check.sh:第1行:意外标记附近的语法错误$'do\r'/Check.sh:第1行:用于*.csv中的f;我在使用cygwin,希望这就是问题所在。让我在linux环境中尝试一下,它自己在我的虚拟机中遇到了问题,我会尝试一下,并让您知道。我尝试使用虚拟CSV,我得到了完美的输出。但是,如果我使用我的原始文件,这些文件是用空数据生成的,这意味着虚拟CSV和原始文件有一些不同的结构。如果你在pastebin.com上上传了一个原始文件的样本,那么我可以看一下。获取此错误行7:语法错误:意外结束file@JimMacaulay这听起来很奇怪,因为文件中只有3行。我创建了两个目录,其中一个是空的*.csv文件,脚本在该目录上没有任何错误。