Bash 如何将cut-c命令的输出存储到shell脚本中的变量中

Bash 如何将cut-c命令的输出存储到shell脚本中的变量中,bash,shell,variables,unix,cut,Bash,Shell,Variables,Unix,Cut,我有一个像这样的文件名 传入的\u文件\u 180420053826.csv 其中180420表示日期,053826表示时间。 我使用了echo$cut-c15-20$filename来检索日期,但无法将输出日期存储在变量中。试试看 my_var="$( echo $filename | cut -c 15-20 )" 演示: 180420 180421 180422 180423 180424 180425 但我想你可能只需要第一条线,也许这就是你需要的 bb=$(head -1 $fil

我有一个像这样的文件名

传入的\u文件\u 180420053826.csv

其中180420表示日期,053826表示时间。 我使用了echo$cut-c15-20$filename来检索日期,但无法将输出日期存储在变量中。

试试看

my_var="$( echo  $filename | cut -c 15-20 )"
演示:

180420 180421 180422 180423 180424 180425

但我想你可能只需要第一条线,也许这就是你需要的

bb=$(head -1 $file|cut -c 1-6)
echo $bb

180420

为了清晰起见,请删除正在发布的行中前面的$。我知道这是您的命令提示符,但如果有人不知道,他也可能在脚本中键入$。一个小优化:至少对于bash来说,它可以通过避免管道编写得更简洁,并执行my_var=$cut-c 15-20再次阅读您的帖子,这就不清楚您在寻找什么。如果变量filename包含字符串Incoming_file_180420053826.csv(您没有写入该文件),则cut命令将对该文件的内容而不是其名称进行操作。我建议您在问题中添加一个完整的、可重复的示例,包括设置变量文件名和执行echo命令。要存储命令的输出,您需要在该命令之前声明变量名。在您的示例中,这变成:mydate=$echo$filename | cut-c15-20;mytime=$echo$filename | cut-c21-26。试试这个,然后回显每个变量,看看它是您想要的。排序这是另一个故事,因为你的日期是ddmmyy格式的,如果使用yymdd会更好,时间应该排序更好。您不能按创建日期对许多传入文件进行siply排序吗?
filename=test.txt
aa=$( cut -c 1-6 $filename )
echo $aa
bb=$(head -1 $file|cut -c 1-6)
echo $bb