bash - 使用 awk/sed/grep 将字符串分解为两个数组
问题描述
从包含不同文件详细信息的文本文件中的内容在 shell/bash 脚本中创建两个不同的数组。如何使用 awk/sed/grep 将目录提取到一个数组中并将文件名提取到另一个数组中?
我有一个如下所示的文本文件
2017-02-04 07:18 /temp/folder1/filename_20170204_something.txt
2017-03-04 07:18 /temp/folder2/filename_20170204_20170304.txt
2017-04-04 07:18 /temp/folder3/filename_20170404_.txt
directories_list= {folder1,folder2,folder3}
file_list = {filename_20170204.txt,filename_20170304.txt,filename_20170404.txt}
解决方案
您想如何处理数组中的重复条目?是否有任何特定的顺序要保存文件。
如果不是,您可以使用以下命令,(删除重复条目并根据文件名排序)
folders=()
files=()
folders=`awk '{print $NF}' <INPUT_FILE> | awk -F'/' '{print $(NF-1)}' | sort -nr | uniq`
files=`awk '{print $NF}' <INPUT_FILE> | awk -F'/' '{print $NF}' | sort -nr | uniq`
下面是 awk 命令的解释,
awk '{print $NF}' <INPUT_FILE> -> takes the last field in the input file
awk -F'/' '{print $(NF-1)}' -> cuts the last filed with / as delimiter and takes the penultimate column
希望这可以帮助 !
推荐阅读
- node.js - 如何解决:“路径”参数必须是字符串类型。运行'vue add vuetify'时收到类型未定义'
- java - 在 Java 11 中配置 gradle 以使用类数据共享
- c# - 我可以在不“窃取”输出的情况下捕获已启动进程的输出吗?
- c++ - 在成员函数内部调用成员函数
- node.js - 从 nodejs 中的 aws lambda 调用在 localhost 上运行的 api
- c++ - 如何使用模板根据数据类型调用函数?
- matlab - 插值错误,绘图功能在运行时不会生成正确的线条
- java - 如何使 Wordat 将页面上该位置的单词作为字符串返回。如果该行或单词不存在,则返回 null
- python - Crontab 执行 python 脚本但有问题
- flutter - 如何在其他小部件上方绘制 InkResponse?