我正在尝试使用awk将许多数据列减少为单个数据列,从INPUT目录到OUTPUT。但是,使用下面附带的代码,我收到以下错误:" OUTPUT /:是一个目录"
#!/bin/bash
FILES=/INPUT/*
OUTPUT=/OUTPUT
for f in $FILES
do
awk '{ print $3 }' $f > $OUTPUT/$f_1c
done
谢谢!
答案 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