无法用bash管道进入另一个目录?

时间:2014-04-16 15:40:58

标签: bash awk

我正在尝试使用awk将许多数据列减少为单个数据列,从INPUT目录到OUTPUT。但是,使用下面附带的代码,我收到以下错误:" OUTPUT /:是一个目录"

#!/bin/bash
FILES=/INPUT/*
OUTPUT=/OUTPUT
for f in $FILES
do
    awk '{ print $3 }' $f > $OUTPUT/$f_1c
done

谢谢!

1 个答案:

答案 0 :(得分:4)

您可以,只需在括号内指明$f,不要将其视为变量f_1c

awk '{ print $3 }' $f > $OUTPUT/${f}_1c
                                ^^^^

正如你在评论中所说:

  

然而,这会在$ {f} _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