无法使用bash将管道传输到另一个目录?

无法使用bash将管道传输到另一个目录?,bash,awk,Bash,Awk,我试图使用awk将许多列的数据简化为单个的数据列,从输入目录到输出。但是,使用下面附带的代码,我得到以下错误:“OUTPUT/:是一个目录” 谢谢 您可以,只是您必须在括号内指明$f,而不是将其视为变量f_1c: awk '{ print $3 }' $f > $OUTPUT/${f}_1c ^^^^ 正如你在评论中所说: 但是,这会将整个路径添加到${f}\u 1c和bash中的文件名 给出一个错误 然后我们只需要得到文件

我试图使用awk将许多列的数据简化为单个的数据列,从输入目录到输出。但是,使用下面附带的代码,我得到以下错误:“OUTPUT/:是一个目录”


谢谢

您可以,只是您必须在括号内指明
$f
,而不是将其视为变量
f_1c

awk '{ print $3 }' $f > $OUTPUT/${f}_1c
                                ^^^^
正如你在评论中所说:

但是,这会将整个路径添加到${f}\u 1c和bash中的文件名 给出一个错误

然后我们只需要得到文件名。这可以通过
basename
完成:

file_name=$(basename "$f")
awk '{ print $3 }' $f > $OUTPUT/${file_name}_1c
总而言之:

#!/bin/bash
FILES=/INPUT/*
OUTPUT=/OUTPUT
for f in $FILES
do
    file_name=$(basename "$f")
    awk '{ print $3 }' $f > $OUTPUT/${file_name}_1c
done

您只需在括号内指明
$f
,而不必将其视为变量
f1c

awk '{ print $3 }' $f > $OUTPUT/${f}_1c
                                ^^^^
正如你在评论中所说:

但是,这会将整个路径添加到${f}\u 1c和bash中的文件名 给出一个错误

然后我们只需要得到文件名。这可以通过
basename
完成:

file_name=$(basename "$f")
awk '{ print $3 }' $f > $OUTPUT/${file_name}_1c
总而言之:

#!/bin/bash
FILES=/INPUT/*
OUTPUT=/OUTPUT
for f in $FILES
do
    file_name=$(basename "$f")
    awk '{ print $3 }' $f > $OUTPUT/${file_name}_1c
done

我明白了。但是,这会将整个路径添加到${f}\u 1c中的文件名,bash会给出一个错误:-bash:/OUTPUT//INPUT/mubunching-100302.0250.001\u 1c:没有这样的文件或directory@StarStrides然后您应该使用
file\u name=$(basename“$f”)
然后使用
awk'{print$3}'$f>$OUTPUT/${file\u name}\u 1c
我看到的东西。但是,这会将整个路径添加到${f}\u 1c中的文件名,bash会给出一个错误:-bash:/OUTPUT//INPUT/mubunching-100302.0250.001\u 1c:没有这样的文件或directory@StarStrides然后应该使用
file\u name=$(basename“$f”)
,然后使用
awk'{print$3}'$f>$OUTPUT/${file\u name}\u 1c