gpt4 book ai didi

linux - Bash脚本获取文件输入并在一定条件下打印内容

转载 作者:太空宇宙 更新时间:2023-11-04 09:41:13 25 4
gpt4 key购买 nike

没错。基本上我想要实现的是一个 bash 脚本,它将文件名作为第一个参数并显示输入文件中的行:

  1. 不是目录
  2. 可执行这些行应按文件大小的升序排序。

我正在使用的输入文件示例具有以下内容:

-rw-r--r-- 1 root     software       36 Dec  3 14:27 config
-rwxr-xr-x 1 root software 72 Dec 3 14:27 config2
-rw-rw-r-- 1 jonathan software 7410294 Dec 3 14:28 even larger file
-rwxrwxr-x 1 jonathan software 17290686 Dec 3 14:29 even larger file2
-rwxrwxr-x 1 jonathan software 2470098 Dec 3 14:28 large file
-rwxr-xr-x 1 andrew software 823366 Feb 11 16:25 myprogram
-rwxrwxr-x 1 jonathan software 29568 Dec 3 14:25 script
drwxrwsr-x 2 andrew software 4096 Dec 3 19:24 testdir1
drwxrwsr-x 2 bob software 4096 Dec 3 10:21 testdir2
drwxrwsr-x 2 david software 4096 Aug 23 14:24 testdir3
drwxrwsr-x 2 david software 4096 Dec 3 13:32 testdir4
drwxrwsr-x 2 james software 4096 Jan 5 14:24 testdir5
-rw-rw-r-- 1 james software 85 Dec 3 14:24 testfile1

我已经编写了脚本来询问文件名并打印文件的内容:

#!/bin/bash
echo "Please enter your filename:"
read filename
while read line;
do echo -e "$line\n";
done < $filename

但我不知道逐行查找内容并搜索不包含“drw”的行的命令是什么,也不知道如何按示例输入文件中给定的大小对行进行排序。

编辑:这是我的问题的第二部分。现在我想修改脚本以获取第二个参数,如果提供则假定为用户名。只会打印与用户名匹配的行。

例如:“jonathan”将打印以下内容:

-rwxrwxr-x 1 jonathan software    29568 Dec  3 14:25 script
-rwxrwxr-x 1 jonathan software 2470098 Dec 3 14:28 large file
-rwxrwxr-x 1 jonathan software 17290686 Dec 3 14:29 even larger file2

最佳答案

这是一个使用 awk 的解决方案:

$ awk '!/^d/ && $1 ~ /x/' text.txt | sort -k5,5n
-rwxr-xr-x 1 root software 72 Dec 3 14:27 config2
-rwxrwxr-x 1 jonathan software 29568 Dec 3 14:25 script
-rwxr-xr-x 1 andrew software 823366 Feb 11 16:25 myprogram
-rwxrwxr-x 1 jonathan software 2470098 Dec 3 14:28 large file
-rwxrwxr-x 1 jonathan software 17290686 Dec 3 14:29 even larger file2
  • 您过滤掉以 d 开头的内容
  • 你检查第一个字段包含 x 的东西
  • 您根据第 5 个字段按数字排序

这是一个可以放入 shell 脚本的版本:

file=$1
user=$2

awk '!/^d/ && $1 ~ /x/ && $3 ~/'"${user}/" "$file" | sort -k5,5n

关于linux - Bash脚本获取文件输入并在一定条件下打印内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21191332/

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