【发布时间】:2018-06-06 02:15:55
【问题描述】:
我有一个包含许多文件的文件夹,我只需要一些列,所以我尝试了这个来提取我需要的内容:
mkdir ./raw_data/selection
doit() {
csvfix read_dsv -f 1,3,7 -s \; $1 > $1 | sed 's/raw_data/raw_data\/selection/'
}
export -f doit
Files_To_Parse=`ls ./raw_data/*csv`
parallel doit ::: $Files_To_Parse
这不起作用。
但如果我这样做:
cd ./raw_data
doit() {
csvfix read_dsv -f 1,3,7 -s \; $1 > selection/$1
}
export -f doit
Files_To_Parse=`ls -1 *csv`
parallel doit ::: $Files_To_Parse
它可以工作,但我希望能够从这个项目的顶层文件夹运行它(即将它放在一个名为 brief_csv.sh 的文件中并从 IDE 调用它)
【问题讨论】:
-
这是您第一次尝试 ls 命令中没有“-1”选项的错字吗?我希望这是必要的。对于您的主要问题,如果这是 Bash,您是否尝试过“$1 > ./raw_data/selection/${1:9}”?否则,可能是“$1 > $(echo $1 | sed 's/raw_data/raw_data\/selection/')”?
-
ls知道它何时写入管道,并自动启用-1行为。仅当您想在交互式会话中查看输出的样子时,才真正需要该选项。 -
无论如何,不要在脚本中使用
ls。 mywiki.wooledge.org/ParsingLs 正确的做法是parallel doit ::: *csv