`awk -F_“{print $1}”` 不会删除每行下划线之前的所有内容

`awk -F_“{print $1}”` 不会删除每行下划线之前的所有内容

我用的是 Mac。我有一个目录,里面的文件名称类似ABC_2016-06-08_09-23.csv。我想提取每个文件名中第一个下划线之前的部分。我试过了,ls | awk -F_ "{print $1}"但得到的是完整的文件名。我做错了什么?

答案1

这里的问题是您使用双引号而不是单引号,因此正确的是:

awk -F_ '{print $1}'

当您使用双引号时,shell 将扩展$1为定义的任何内容。如果定义的内容为空,则将扩展为空,因此您将得到一个{print}打印整行的简单示例。

$回显“$1”

$ echo "hello_you" | awk -F_ "{print $1}"
hello_you
$ echo "hello_you" | awk -F_ '{print $1}'
hello

看看我们如何才能让它在某种程度上变得有用:

$ myvar="ueee"
$ echo "hello_you" | awk -F_ "{ueee=23; print $myvar}"
23

相关内容