小编agc*_*agc的帖子

如何使用sed替换换行符(\n)?

如何\n使用sed命令替换换行符()?

我没试成功:

sed 's#\n# #g' file
sed 's#^$# #g' file
Run Code Online (Sandbox Code Playgroud)

我如何解决它?

sed

1295
推荐指数
23
解决办法
157万
查看次数

找出序号中的差距

如果这是一个简单的问题(或者比我想的更复杂),我不会这样做是为了生活,请原谅我.我一直在挖掘档案,发现很多技巧很接近,但是作为一个新手,我不知道如何调整我的需求,或者他们超出了我的理解.

我有一些大数据文件,我可以解析出来生成一个主要是顺序的坐标列表

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的输出,并与之合作以获得差距.

bash awk

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

独家或正则表达

寻找一点正则表达式的帮助.我想设计一个表达式,匹配一个字符串与" foo "或" bar ",但不是" foo "和" bar "

如果我做的事情......

/((foo)|(bar))/
Run Code Online (Sandbox Code Playgroud)

它会匹配" foob​​ar ".不是我想要的.那么,只有当一个术语或另一个术语存在时,如何才能使正则表达式匹配?

谢谢!

regex xor

29
推荐指数
4
解决办法
4万
查看次数

相当于破折号外壳中的pipefail

是否有一些类似的选项dash对应于外壳pipefailbash

或者,如果管道中的一个命令失败(但没有在其上退出,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表达.

有没有其他方法可以实现它?

谢谢!

bash posix pipe dash-shell

25
推荐指数
2
解决办法
4533
查看次数

用bash在一个巨大的文件中获取一行

如何在3 gig文本文件中获取特定行.所有线路都有:

  • 相同的长度,和
  • 由...划界\n.

我需要能够按需获得任何线路.

如何才能做到这一点?只需要返回一行.

bash

17
推荐指数
2
解决办法
7587
查看次数

使用bash生成排列

是否有可能编写一个bash脚本,可以从文件中读取每一行并为每个行生成排列(不重复)?使用awk/perl很好.

File
----
ab
abc


Output
------
ab
ba
abc
acb
bac
bca
cab
cba
Run Code Online (Sandbox Code Playgroud)

bash shell permutation

14
推荐指数
5
解决办法
3万
查看次数

在Unix上连接文本文件中的多个字段

我该怎么做?

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相同时在File1File2中共同出现的行.

有办法吗?

unix linux bash join

13
推荐指数
4
解决办法
3万
查看次数

如何从2个文件顺序读取1行?

我如何一次从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)

unix bash

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

如何删除数组中的元素,然后在Shell脚本中移动数组?

首先让我清楚地说明我的问题:

例如:让我们假装这是我的数组,(元素无关紧要,因为我的实际代码有所不同):

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 @等.

如何删除数组中的元素并移动其他元素,以便数组中没有空/空格?

谢谢!

bash shell

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

对于任何Linux Distro的打包系统,请查找可同时安装的程序包的最大数量

有些软件包冲突,因此无法一次安装所有可用软件包.给定系统的可安装包的最大可能数量是多少?蛮力的试错方法是:

  1. 列出每个可能的包名, dglob -a > list
  2. 从中,制作slist1 slist2 slist3 ...每个可能的包组合的子列表.在我的系统上dglob -a | wc -l返回91327,这将需要一个不可行的大数 (1.467×10 ^ 27492)的文件.
  3. apt-get install在每个列表上运行,以及rm那些产生冲突的列表.
  4. 按行数对剩余列表进行排序,并显示最长的列表. 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)

linux debian package-managers dpkg

11
推荐指数
1
解决办法
354
查看次数

标签 统计

bash ×7

linux ×2

shell ×2

unix ×2

awk ×1

dash-shell ×1

debian ×1

dpkg ×1

join ×1

package-managers ×1

permutation ×1

pipe ×1

posix ×1

regex ×1

sed ×1

xor ×1