小编jim*_*mij的帖子

为什么 8 个数字被认为是“强”密码?

只是好奇为什么 8 个数字在 linux(CentOS,如果重要)中被接受为密码,而不是非字典单词上的 8 个字符。

毕竟每个数字是 10 对 26。(52 个计数区分大小写)

security password

6
推荐指数
1
解决办法
703
查看次数

使用 sed 删除转义字符

我的输入来自包含特殊转义字符的管道。为了便于说明,该流如下所示:

printf "foo.bar\033[00m" > file
cat file
Run Code Online (Sandbox Code Playgroud)

如何删除尾随.bar\033[00m?我已尝试以下方法,但这不起作用:

cat file | sed 's/\.bar\033[00m//'
Run Code Online (Sandbox Code Playgroud)

sed text-processing escape-characters

6
推荐指数
1
解决办法
1万
查看次数

grep 多个正则表达式,并计算出现次数

说,我有一个文件,必须在其中搜索多个正则表达式,并且必须计算每个正则表达式的匹配数。

因此,我无法组合这些模式:

grep -Po '{regex_1}|{regex_2}|...|{regex_n}' file | wc -l
Run Code Online (Sandbox Code Playgroud)

... 因为需要每个正则表达式的出现次数。

我显然可以:

occurences[i]=$(grep -Po "${regex[i]}" file | wc -l)
Run Code Online (Sandbox Code Playgroud)

...但不幸的是,遇到的文件可能非常大(> 1 GB)并且有许多模式(在数千个范围内)需要检查,这使得该过程非常缓慢,因为对同一文件进行多次读取涉及。

有没有办法快速做到这一点?

grep search regular-expression patterns

6
推荐指数
1
解决办法
1623
查看次数

For 循环格式化

我在格式化长字符串输入的嵌套 for 循环时遇到问题:

我目前正在使用以下嵌套的 for 循环来命名来自我省略的单独程序的输出文件:

#!/bin/bash
for hemi in lh rh
do
    for measure in thickness area volume meancurv gauscurv foldind curvind
    do
        echo ${hemi}"--"${measure}
    done
done
Run Code Online (Sandbox Code Playgroud)

我希望能够像下面这样格式化循环,以方便运行多个不同的循环,其中包含可能需要修改的更长的数组列表。只需要在一个地方修改列表将大大减少错误/遗漏等的机会:

#!/bin/bash

hemi=( lh rh )
measure=( thickness area volume meancurv gauscurv foldind curvind )

for((i=${hemi[${i}]};i<2;i++));do
    for((j=${measure[${j}]};j<7;j++));do
        echo ${hemi[${i}]}"--"${measure[${j}]}
    done
done
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出,我无法弄清楚我做错了什么:

lh--thickness
lh--area
lh--volume
lh--meancurv
lh--gauscurv
lh--foldind
lh--curvind
./for_loop_testing.sh: line 7: ((: j=: syntax error: operand expected (error token is "=")
Run Code Online (Sandbox Code Playgroud)

bash shell-script

6
推荐指数
2
解决办法
1678
查看次数

在 Makefile 中迭代 bash 关联数组

$ bash -version
GNU bash, version 4.3.11(1)-release (x86_64-pc-linux-gnu)
Run Code Online (Sandbox Code Playgroud)

考虑以下 shell 脚本:

#!/bin/bash

declare -A PROVS=( ["NL"]=10 ["PE"]=11 ["NS"]=12 ["NB"]=13 ["QC"]=24 ["ON"]=35 ["MB"]=46 ["SK"]=47 ["AB"]=48 ["BC"]=59 ["YK"]=60 ["NT"]=61 ["NU"]=62 )

for key in "${!PROVS[@]}" ; do \
  touch "foo_${key}_${PROVS[${key}]}" ; \
done
Run Code Online (Sandbox Code Playgroud)

我正在尝试在 Makefile 中执行等效操作:

SHELL := /bin/bash
.PHONY: foo
foo:
  declare -A PROVS=( ["NL"]=10 ["PE"]=11 ["NS"]=12 ["NB"]=13 ["QC"]=24 ["ON"]=35 ["MB"]=46 ["SK"]=47 ["AB"]=48 ["BC"]=59 ["YK"]=60 ["NT"]=61 ["NU"]=62 )

  for key in "$${!PROVS[@]}" ; do \
    touch "foo_$${key}_$${PROVS[$${key}]}" ; \
  done
Run Code Online (Sandbox Code Playgroud)

我 …

bash make associative-array

6
推荐指数
1
解决办法
1万
查看次数

在 bash 参数历史中前进

我知道Alt+.在 bash 中显示前一个参数。

但是,如果我通过了所需的参数(按Alt+.一次太多次)并且我想在历史中前进怎么办?

有没有组合键?

bash keyboard-shortcuts readline

6
推荐指数
1
解决办法
329
查看次数

从文本文件中删除匹配文本文件中多个正则表达式的行

假设我有FileA.txt,它看起来有点像这样:

43287134, string1, string2
1233, foo, bar
973, barfoo, foobar
7464, asdf, ghjk
Run Code Online (Sandbox Code Playgroud)

我有带有这些正则表达式的FileB.txt,用一行分隔:

^973,
^1233,
Run Code Online (Sandbox Code Playgroud)

我想申请FileB.txt正则表达式到FileA.txt,并删除线相匹配的,这样最终的结果将是:

43287134, string1, string2
7464, asdf, ghjk
Run Code Online (Sandbox Code Playgroud)

有没有可用的工具来做到这一点?谢谢!

text-processing regular-expression

6
推荐指数
1
解决办法
380
查看次数

从 echo 变量中删除最后一个字符

这个脚本很好用,我修改了它以增加 5。我的问题是我不需要最后一个逗号,我不知道如何删除它。

for ((i=1, j=0; i <= 12 ; i++, j=j+5))
do
 echo -n "$j,"
done
Run Code Online (Sandbox Code Playgroud)

command-line shell bash

5
推荐指数
5
解决办法
2382
查看次数

如何将字符串转换为在 bash 脚本中以特定基数解释的数字?

我只是想将字符串转换$RECORD_HDR为数字$RECORD_SIZE,其中

echo $RECORD_HDR给出 003D 并且 echo $RECORD_SIZE应该给出 61

bash shell-script arithmetic

5
推荐指数
1
解决办法
2067
查看次数

在任何情况下`cd .`(单点)命令可能有用吗?

这在理论上应该只是多余的,因为它更改为当前工作目录。无论如何,在实践中是否有任何场景,此命令可能有用?

filesystems cd-command

5
推荐指数
2
解决办法
1596
查看次数