【问题标题】:awk and bash var / command interactionawk 和 bash var/命令交互
【发布时间】:2023-03-22 11:21:01
【问题描述】:

我想获得使用接收两个参数的 bash 脚本创建 csv 文件的最简单方法:$var1 是要列出的文件夹,$var2 是要匹配的简单字母数字字符串模式。

当前版本选择正确的文件并编写一个精细的 csv 文件,但我想为每个文件名添加一个路径(路径存储在 var1 中)并使用 ls 编写一个“可执行”Yes/Now 字段-F 标签选项。

  ls -lF "$var1"/*"$var2"* | awk {'print $9";$5";"$2";"$1'} 

使用var1='.'; var2='sh' 我明白了

./2.sh*;1283;1;-rwxr--r--
./2.sh~*;1285;1;-rwxr--r--
./3.sh*;913;1;-rwxr--r--
./3.sh~*;849;1;-rwxr--r--
./4.sh*;411;1;-rwxr--r--
./4.sh~*;411;1;-rwxr--r--
./5.sh*;413;1;-rwxr--r--
./5.sh~*;386;1;-rwxr--r--

这与我需要的相似。 如果我在 bash 目录中,我想要这个输出

bash/2.sh;1283;1;-rwxr--r--;Yes
bash/2.sh~;1285;1;-rwxr--r--;Yes
bash/3.sh;913;1;-rwxr--r--;Yes
bash/3.sh~;849;1;-rwxr--r--;Yes
bash/4.sh;411;1;-rwxr--r--;Yes
bash/4.sh~;411;1;-rwxr--r--;Yes
bash/5.sh;413;1;-rwxr--r--;Yes
bash/5.sh~;386;1;-rwxr--r--;Yes

【问题讨论】:

  • 编辑您的问题以显示一些示例输入和预期输出。
  • 另请查看stat 命令以显示有关文件的信息。
  • 我发现使用var1=bash 时出现错误,提示无法访问 bash/*sh*。由于某种原因,它将 * 读作字符而不是通配符。我也会检查 stat 命令,谢谢。

标签: bash csv awk ls


【解决方案1】:

最后,我使用 sed 替换 ls 输出,在 -F 附加的 '*' 所在的位置添加一个 yes 字段。因此,我必须使用 awk 轻松打印该字段。我生成了相对路径并将其存储到 _dir 变量中,并使用简单的引号将其包含到 awk 打印中。

sed 's/\*$/\ Yes/'awk {'print "'$_dir/'"$9";"$5";"$2";"$1";"$10'}

仍然不是“最简单的方法”。但我快到了。 我会试试统计,这似乎很有用。

尝试使用递归将模式作为参数传递给函数时出错,但这是另一个问题的主题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-18
    • 2012-10-23
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多