Linux 在bash脚本中执行cut命令
使用echo打印的每一行都包含给定文件所在目录的前斜杠。我正在尝试使用cut命令剪切前斜线,但它不起作用。这些文件是gzip文件,因此它们具有.gz扩展名Linux 在bash脚本中执行cut命令,linux,bash,Linux,Bash,使用echo打印的每一行都包含给定文件所在目录的前斜杠。我正在尝试使用cut命令剪切前斜线,但它不起作用。这些文件是gzip文件,因此它们具有.gz扩展名 #!/bin/bash for filename in /data/logs/2017/month_01/201701* do echo $filename cut $filename -d '/' -f1 done 提前谢谢 命令的顺序是错误的。您需要通过管道(|)或此处字符串(命令顺序错误)将字符串输入流式传输到cut命令。您需要通过
#!/bin/bash
for filename in /data/logs/2017/month_01/201701*
do
echo $filename
cut $filename -d '/' -f1
done
提前谢谢 命令的顺序是错误的。您需要通过管道(
|
)或此处字符串(命令顺序错误)将字符串输入流式传输到cut
命令。您需要通过管道(|
)或此处字符串()将字符串输入流式传输到cut
命令,建议使用b@lnian cut命令通过管道符号执行echo命令
为了只获取脚本中的文件名,您需要使用
使用-f1选项剪切将获得/之前的第一个值,该值将为空,因此您需要从文件名中获取最后一个值
#!/bin/bash
for filename in /data/logs/2017/month_01/201701*
do
echo "$filename" | rev| cut -d '/' -f1
done
rev命令将文件名反转,这样您将获得文件名的最后一个值,即建议的b@lnian cut命令,通过管道符号与echo命令一起使用
为了只获取脚本中的文件名,您需要使用
使用-f1选项剪切将获得/之前的第一个值,该值将为空,因此您需要从文件名中获取最后一个值
#!/bin/bash
for filename in /data/logs/2017/month_01/201701*
do
echo "$filename" | rev| cut -d '/' -f1
done
rev命令反转文件名,这样您将得到最后一个值,即您的文件名假设文件名为/a/b/c.gz
您只需要c.gz
有两个非常简单的答案:
basename $filename
另一个是:
echo ${filename##*/}
后者使用bash
的内置字符串delete参数扩展
解决问题的另一种方法是,您可以先更改目录,即
#!/bin/bash
pushd /data/logs/2017/month_01
for filename in 201701*
do
echo $filename
done
popd
参考:
(编辑:修复了由@123标识的打字错误)假设文件名为/a/b/c.gz
您只需要c.gz
有两个非常简单的答案:
basename $filename
另一个是:
echo ${filename##*/}
后者使用bash
的内置字符串delete参数扩展
解决问题的另一种方法是,您可以先更改目录,即
#!/bin/bash
pushd /data/logs/2017/month_01
for filename in 201701*
do
echo $filename
done
popd
参考:
(编辑:由@123标识的固定打字错误)是否将echo“$filename”|剪切…
帮助?请给出一个输入和所需输出的示例。是否将echo“$filename”|剪切…
帮助?请举例说明您的输入和所需的输出。在参数扩展示例中,您可能缺少一个/
。在参数扩展示例中,您可能缺少一个/
。