【问题标题】:Read through file with bash script and check exact positions使用 bash 脚本通读文件并检查确切位置
【发布时间】:2021-07-14 09:46:52
【问题描述】:

我有一个带有预定义格式的字符串的文件:

src/history_of_vim.txt  -      1803  -  Wed Jul 14 11:59:15 +07 2021  -  ef669ffc3a7fc1c502c7be34d478757c1efe1aa6fd5768174e33542cb26c62bd  -  sha256

src/history_of_vim.txt  -      1853  -  Wed Jul 14 12:03:51 +07 2021  -  ef669ffc3a7fc1c502c7be34d478757c1efe1aa6fd5768174e33542cb26c62bd  -  sha256 

我需要编写一个 bash 脚本来计算行数、唯一文件的数量(例如,我只有 1 个唯一文件 - history_of_vim.txt)和唯一校验和的数量。

我做了以下代码(输入路径只是一个例子):

count_lines=0
while IFS= read -r line
do
  count_lines=${countlines+1}
done < "$input" 
echo $count_lines

但它只对第一个任务有帮助。 我试图将awk 与分隔符'-' 一起使用,然后打印我需要的确切位置,并且只使用sort -u 唯一的位置。但是,我不能把它放在一起让它工作。

【问题讨论】:

标签: bash


【解决方案1】:

你可以使用这个awk:

awk -F '[[:blank:]]*-[[:blank:]]*' 'NF {++nrec; files[$1]; chksum[$(NF-1)]} 
END {print nrec, length(files), length(chksum)}' file

2 1 1

【讨论】:

  • 是的,它给出了我需要的结果。寿,我几乎不了解所有语法并为自己整理(我对 bash 很陌生)。谢谢。
  • 请通过basic awk tutorial。 awk 与 bash 不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-15
  • 2016-07-17
  • 2014-10-26
  • 1970-01-01
相关资源
最近更新 更多