如何\n使用sed命令替换换行符()?
我没试成功:
sed 's#\n# #g' file
sed 's#^$# #g' file
Run Code Online (Sandbox Code Playgroud)
我如何解决它?
如果这是一个简单的问题(或者比我想的更复杂),我不会这样做是为了生活,请原谅我.我一直在挖掘档案,发现很多技巧很接近,但是作为一个新手,我不知道如何调整我的需求,或者他们超出了我的理解.
我有一些大数据文件,我可以解析出来生成一个主要是顺序的坐标列表
5
6
7
8
15
16
17
25
26
27
Run Code Online (Sandbox Code Playgroud)
我想要的是一份差距清单
1-4
9-14
18-24
Run Code Online (Sandbox Code Playgroud)
我不知道perl,SQL或任何花哨的东西,但我想我可以做一些能从下一个中减去一个数字的东西.然后,我至少可以grep得到差异不是1或-1的输出,并与之合作以获得差距.
寻找一点正则表达式的帮助.我想设计一个表达式,匹配一个字符串与" foo "或" bar ",但不是" foo "和" bar "
如果我做的事情......
/((foo)|(bar))/
Run Code Online (Sandbox Code Playgroud)
它会匹配" foobar ".不是我想要的.那么,只有当一个术语或另一个术语存在时,如何才能使正则表达式匹配?
谢谢!
是否有一些类似的选项dash对应于外壳pipefail的bash?
或者,如果管道中的一个命令失败(但没有在其上退出,set -e那么)获得非零状态的任何其他方式.
为了更清楚,这是我想要实现的一个例子:
在调试makefile示例中,我的规则如下所示:
set -o pipefail; gcc -Wall $$f.c -o $$f 2>&1 | tee err; if [ $$? -ne 0 ]; then vim -o $$f.c err; ./$$f; fi;
Run Code Online (Sandbox Code Playgroud)
基本上它运行会在出错时打开错误文件和源文件,并在没有错误时运行程序.给我一些打字.上面的代码段运行良好,bash但我的新Ubunty系统使用dash似乎不支持pipefail选项.
如果下面一组命令的第一部分失败,我基本上想要一个FAILURE状态:
gcc -Wall $$f.c -o $$f 2>&1 | tee err
Run Code Online (Sandbox Code Playgroud)
所以我可以用它来if表达.
有没有其他方法可以实现它?
谢谢!
如何在3 gig文本文件中获取特定行.所有线路都有:
\n.我需要能够按需获得任何线路.
如何才能做到这一点?只需要返回一行.
是否有可能编写一个bash脚本,可以从文件中读取每一行并为每个行生成排列(不重复)?使用awk/perl很好.
File
----
ab
abc
Output
------
ab
ba
abc
acb
bac
bca
cab
cba
Run Code Online (Sandbox Code Playgroud) 我该怎么做?
File1看起来像这样:
foo 1 scaf 3
bar 2 scaf 3.3
Run Code Online (Sandbox Code Playgroud)
File2看起来像这样:
foo 1 scaf 4.5
foo 1 boo 2.3
bar 2 scaf 1.00
Run Code Online (Sandbox Code Playgroud)
我想要做的是找到 在字段1,2和3相同时在File1和File2中共同出现的行.
有办法吗?
我如何一次从1个文件中读取2个文件?假设我有file1和file2以及以下内容:
文件1:
line1.a
line2.a
line3.a
Run Code Online (Sandbox Code Playgroud)
文件2:
line1.b
line2.b
line3.b
Run Code Online (Sandbox Code Playgroud)
我如何获得这样的输出 -
line1.a
line1.b
line2.a
line2.b
line3.a
line3.b
...
...
Run Code Online (Sandbox Code Playgroud) 首先让我清楚地说明我的问题:
例如:让我们假装这是我的数组,(元素无关紧要,因为我的实际代码有所不同):
array=(jim 0 26 chris billy 78 hello foo bar)
Run Code Online (Sandbox Code Playgroud)
现在说我要删除以下元素:
chris 78 hello
Run Code Online (Sandbox Code Playgroud)
所以我做了:unset array[$i]循环遍历数组.这会正确地删除元素,但是,我最终得到一个如下所示的数组:
array=(jim 0 26 '' billy '' '' foo bar)
Run Code Online (Sandbox Code Playgroud)
我需要它看起来像这样:
array=(jim 0 26 billy foo bar)
Run Code Online (Sandbox Code Playgroud)
其中吉姆是在索引0,0 @ 1,26 2 @等.
如何删除数组中的元素并移动其他元素,以便数组中没有空/空格?
谢谢!
有些软件包冲突,因此无法一次安装所有可用软件包.给定系统的可安装包的最大可能数量是多少?蛮力的试错方法是:
dglob -a > listslist1 slist2 slist3 ...每个可能的包组合的子列表.在我的系统上dglob -a | wc -l返回91327,这将需要一个不可行的大数 (1.467×10 ^ 27492)的文件.apt-get install在每个列表上运行,以及rm那些产生冲突的列表.wc -l slist* | head -n -1 | sort -g | tail -1.容易,但资源太重,所以也许有一些更可行的方法.
从中可以得到各种相关问题,例如:
给定一个包'foo',如何找到与'foo'不冲突的最大可安装包数?
对于所有可能的包,它具有最小的最大值,(使其成为最"争吵"的包装)?
(注意:该问题适用于Debian,Red Hat以及任何具有映射包冲突的打包系统的发行版或操作系统.任何适用平台的答案都是有效的.)
背景:
Debian有成千上万的软件包. dglob(来自debian-goodies包)很方便快速计算:
# show how many packages installed and available …Run Code Online (Sandbox Code Playgroud)