如何在Bash中从另一个中减去一个集合?
这类似于:bash中是否存在"set"数据结构?但是因为它询问如何使用代码执行减法
如何获得:
我正在努力学习一些Bash,以便有一天可能会找到一份使用计算机的工作.
为了提高我的清晰度和门徒编写我的自学代码,我试图坚持一套一致的"指导原则".
当我推出自己的"指导方针"时,我显然会问自己:我不应该使用既定标准吗?
我找不到一个这样的"权威"参考Bash,类似于这些其他语言:
这是我自己整理的东西......但我认为,特别是作为一个初学者,我应该使用专家编写的指南,而不是试图想出我自己的指南,因为它们不会基于丰富的经验,见解,实用性,常见模式/反模式的知识等.
你可能会对这些文件的有效性提出异议,但是有些人必须喜欢网络上的这些突出的例子,就像我在上面的子弹列表中提到的那样.
################################################################################
# Coding conventions
#
# - Prefer lines of 80 characters of length or less
#
# - Perform arithmetic operations and numeric comparisons within "(( ))" blocks
# e.g. if ((42<=24+24)), ((3**3==27))
#
# - Reference variables by name, not expansion, within arithmetic evaluation
# e.g. ((i++)) rather than …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Eclipse Java项目,并希望使用"变量"指向所需的库(.jar文件).
建立:
/mylibs/sharedlibs/some/complex/path来源控制:Mercurial
我使用的libs示例:
如何配置项目Build Path以使用相同的"变量"作为库的基本目录,指向不同机器上的不同位置,但仍然将我的项目描述签入源代码控制,这样当我添加新库时,如果我指定它相对于libs 基地的位置,它可以在两台机器上找到?
我找到了帮助文件,但可以使用一个例子,甚至可能是截图吗?
例如,我是否复制此模型:
在"Java>构建路径>类路径变量"或其他地方?
我已经做了一些"盲目的试验和错误"......就像那里的"$ {env:VAR}"这样的拼接形式.
哦,我想我应该提一下,我不知道如何根据环境变量设置这些Eclipse变量,因为我的系统的环境变量是由Bash设置的.profile,我怀疑Eclipse运行shell来获取之前...
/org.eclipse.jdt.core/org.eclipse.jdt.core.classpathVariable.my_libraries=$MY_SYS_ENV_VAR_LIBS
Run Code Online (Sandbox Code Playgroud)
当然,我使用"配置构建路径>库>添加变量",然后从那里进行扩展,但仍然......一个例子值得1000字......(可能是定义一个Eclipse变量,从中Extend实际.包含在Build Paths中的jar引用只是不能基于系统环境变量,完全停止?!)
PS:请不要问我只是符号链接的东西,我不是共享机器上的系统管理员..
在bash中,我想将类似PATH的环境变量转换为可能包含空格分隔的元素array,确保带空格的元素不会导致分词,显示为"多个元素".
让我们PATH_VARIABLE成为有问题的变量.
让我们un:dodecaedro:per:tirare:per:i danni为变量的内容.
它 适用 于所需的 array _to有6元素,而不是7.
0) un
1) dodecaedro
2) per
3) tirare
4) per
5) i danni
Run Code Online (Sandbox Code Playgroud)
"棘手"条目可能是以空格分隔的值:i danni.
我正在寻找绝对最优雅 和正确的方法来实现这一目标.
限制:它必须适用于我的bash版本:v3.2.48(1)-release
在python中,这样做非常精美:
>>> v='un:dodecaedro:per:tirare:per:i danni'
>>> len(v.split(':'))
6
Run Code Online (Sandbox Code Playgroud)
作品.显示我在寻找什么.
在我们心爱的狂欢中,最好的方法是什么?
你能特别改进我的尝试4吗?
#!/bin/bash
PATH_VARIABLE='un:dodecaedro:per:tirare:per:i danni'
# WRONG
a1=($(echo $PATH_VARIABLE | tr ':' '\n')) …Run Code Online (Sandbox Code Playgroud) 创建一个类,用作String对象的不可变列表.
我决定利用Google Guava的ImmutableList <E>集合,而不是用Collections.unmodifiableList(List <?extends T> list)包装一个简单的List <E>,因为我理解这可以避免对后备List <E进行不必要的并发检查>,它不知道被包装(来源:ImmutableCollectionsExplained).
这里有一些尝试,尽管可能有更多的组合.原谅幽默的演绎.
import java.util.List;
import com.google.common.collect.ImmutableList;
class BritnetSpearsSpellings implements Iterable<String> {
public static BritnetSpearsSpellings of(String... spellings) {
BritnetSpearsSpellings britneySpears = new BritnetSpearsSpellings();
britneySpears.spellings = ImmutableList.copyOf(spellings);
return britneySpears;
}
private List<String> spellings;
private BritnetSpearsSpellings() { …Run Code Online (Sandbox Code Playgroud) 在这种情况下,最好手动选择要应用替换的行.即不需要自动查找和替换.
将此过程视为从文本行创建"标记"并浏览项目列表,每个项目是"标记"行后面的一行文本,并决定是否应使用内容覆盖该行. "盖章"与否.如果是这样,请用"标记"替换该行.
最后一步,即用光标内容触发删除/替换光标下的行,应该尽可能简单,最好像按下一样简单(重复上一次更改)或(执行宏寄存器@的内容).. @@
简单的工作流程:
V (按行开始可视模式) y (将文本拖入未指定的寄存器)V (按行开始可视模式)(选择要替换的文本)p (将文本放在光标后的未指定寄存器中)如果多次应用则不起作用.
具体来说,替换文本会覆盖包含最初复制的行的寄存器,并打算用作"戳记".
我已经尝试使用"_y要么yank或delete在命名寄存器"下划线",避免邮票内容的损失,但我期待的东西,最终被快速和舒适的键入,我手动浏览清单,并申请更换地方我认为合适.
如果我能帮助它,我宁愿不使用宏或"重映射".
请参阅下面的示例起始文件,然后是所需的最终阶段,以进一步明确.
在这个阶段,我选择blueberry并将其作为我的"邮票".
blueberry
apple
banana
coconut
apple
banana
coconut
apple
banana
coconut
Run Code Online (Sandbox Code Playgroud)
在列表中移动之后,我已经应用了一些替换,使用某些行的"顶部" "戳" ,使它们与"戳"行相同.
blueberry
apple
banana
blueberry
apple
banana
coconut
apple
banana
blueberry
Run Code Online (Sandbox Code Playgroud) 我如何setDebug(true)在JavaMail会话上捕获流并在我的日志记录框架中使用它?(没有下载源,更改方法接受流作为参数,重新编译它,...)
更一般地说,Java中是否存在以这种方式"劫持和重定向"通用流输出的标准方法?请注意,System.out可能已被其他输出污染,我不知道如何"过滤"...
从右边开始,在Java字符串中每8个字符后插入一个(短划线/减号字符)的最佳方法是什么-?
例子:
1111 -> 1111
111111111 -> 1-11111111
1111111111111111 -> 11111111-11111111
100001111111111111111 -> 10000-11111111-11111111
Run Code Online (Sandbox Code Playgroud)
我的尝试,表明我自己尝试过这样做(下面的评论问:"这是这个功课吗?":
import junit.framework.TestCase;
public class InsertCharacterAfterEveryNCharacters extends TestCase {
public static String insertSpacerAfterNCharactersFromTheRight(char spacer,
int spacing, String string) {
final int length = string.length();
final int newStringCapacity = length + (int) Math.ceil(length / (double) spacing);
StringBuilder stringBuilder = new StringBuilder(newStringCapacity);
for (int i = length - 1; i >= 0; i--) {
stringBuilder.append(string.charAt(i));
if (i % spacing == 0 && i > …Run Code Online (Sandbox Code Playgroud) what is the best way to generate a cartesian product of some lists, not knowing in advance how many lists there are?如果你愿意,你可以在这里停止阅读.
我没有钱上学,所以我试图在高速公路收费站夜班工作时使用互联网进行一些编程.我决定尝试解决一些"编程挑战"问题作为练习.
这是我要解决的问题,TopCoder的属性:
http://community.topcoder.com/stat?c=problem_statement&pm=3496
Run Code Online (Sandbox Code Playgroud)
我不会复制和粘贴完整的描述以尊重他们的版权声明,但我假设我可以总结它,只要我不逐字使用它(IANAL).
如果历史股票价格的"加权和"是通过将这些价格的子集乘以相等数量的"加权"因子而获得的附加值的总和,前提是后者加起来为1.0,并从给定的有效值集合中选择[-1.0,-0.9,...,0.9,1.0],对作为函数参数提供的所有历史数据使用此公式,一次检查5个价格,预测下一个价格并返回"加权因子"的排列"产生最低的平均预测误差.每次运行至少会有6个股票价格,因此保证至少有一个预测,最终结果应该在1E-9之内准确.
格式:
list格式为下载地址:
import itertools
# For a permutation of factors to be used in a weighted sum, it should be chosen
# such than the sum of all factors is 1. …Run Code Online (Sandbox Code Playgroud) 我把它放在一起,但它很糟糕:(例如那里的魔术数字,文本解析..嘘!)
awk -F: '{if($3 >= 1000 && $3 < 2**16-2) print $1}' /etc/passwd
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?