我读过man test并发现:
注意:二进制 -a 和 -o 本质上是不明确的。使用“测试 EXPR1 && 测试 EXPR2”或“测试 EXPR1 ||” 改为测试 EXPR2'。
有人可以解释一下-aand中的含糊之处-o吗?
英语不是我的母语。据我了解,Kevin Braunsdorf 和 Matthew Bradburn(本手册页的作者)建议我们使用&&而不是仅仅-a因为-a可以用作另一个二进制文件中的密钥,因为-a可能有不同的可能含义。
所以,与我们使用时-a没有关联。对于某些人来说并不清楚,所以人们会这样想:“嗯,那把钥匙是什么?我不知道,不确定它是什么,我必须访问......”logical ANDtestlogical ANDman
我能找到的唯一原因是,使用 的代码&&比使用 的代码更容易阅读-a(仅是一个示例):
与-a:
if [ -f "${my_var_with_filename}" -a -n "${my_another_array_var_with_filename[2]}" -o -r /just/path/to/file ]
then
...
fi
Run Code Online (Sandbox Code Playgroud)
与 && 相同:
if [ -f "${my_var_with_filename}" ] && [ -n "${my_another_array_var_with_filename[2]}" ] || …Run Code Online (Sandbox Code Playgroud) 我有一个文件1.txt
$ cat 1.txt
page1
?age1
Run Code Online (Sandbox Code Playgroud)
但:
$ head -n1 1.txt | file -i -
/dev/stdin: text/plain; charset=us-ascii
$ head -n2 1.txt | tail -n1 | file -i -
/dev/stdin: text/plain; charset=utf-8
Run Code Online (Sandbox Code Playgroud)
字符串有不同的字符集.因为它我不能用我知道的方法得到唯一的字符串:
$ cat 1.txt | sort | uniq -c | sort -rn
1 ?age1
1 page1
Run Code Online (Sandbox Code Playgroud)
那么,你能帮助我找到在我的情况下如何获得唯一字符串的方法吗?PS Prefer解决方案只能使用linux命令行/ bash/awk.但是如果你有另一种编程语言的解决方案,我也会喜欢它.
UPD.awk '!a[$0]++' Input_file不工作,pic: