gpt4 book ai didi

linux - 如何在文件中的特定列中搜索 shell 中的字符串?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:17 24 4
gpt4 key购买 nike

我正在学习 shell 脚本。我编写了一个脚本,以以下制表符分隔格式为当前工作目录中的所有文件和文件夹编制索引,

路径文件名文件/目录上次修改日期大小文本文件(是/否)

例如,我的文件“index.txt”中的两行是,

home/Desktop/C    C    d    Thu Jan 16 01:23:57 PST 2014    4 KB    N
home/Desktop/C/100novels.txt 100novels.txt f Thu Mar 14 06:04:06 PST 2013 0 KB Y

现在,我想编写另一个脚本来从以前的文件中搜索文件,该文件接受命令行参数,即文件名。还有可选参数,如 -dir(如果仅搜索目录)、-date DATE(最后修改日期)、-t(仅用于文本文件)等。如何解决这个问题?

我知道在文件中搜索字符串的 grep 命令,但假设我输入了一个文件名,它会在整个文件中搜索文件名,而不是只搜索文件名列。我该怎么做呢?是否有任何其他命令可以实现此目的?

最佳答案

“我想在特定列中搜索特定字符串...该怎么做?”

例如,要搜索目录:

awk -F '\t' '$3 == "d"' filename

您还可以通过正则表达式或子字符串匹配进行搜索。请在学习过程中提出更多问题。

单引号防止变量替换(和其他形式的扩展)-- see the bash manual .所以你必须通过其他方式传递值:

awk -F'\t' -v s="$search_file" '$2 == s' ./index.txt > final.txt

或者,使用双引号,更脆弱,更难阅读 IMO

awk -F'\t' "\$2 == \"$search_file\"" ./index.txt > final.txt

另外,不要混用单引号和双引号。根据您需要的功能,选择一个或另一个。

关于linux - 如何在文件中的特定列中搜索 shell 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21205908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com