小编Che*_*n17的帖子

如何命令ls命令按数字顺序显示?

我在一个目录中创建了 3 个文件,名称如下:

11 13 9

问题,因为我在执行命令时将文件放在文件9之后创建了文件。1313ls

您是否有任何想法让ls命令按数字顺序对文件进行排序,如下所示:

9 11 13

bash ls

9
推荐指数
1
解决办法
6326
查看次数

用BASH shell中的awk生成随机数

我希望随机地对文件的行(行)进行随机打印,然后打印到不同的五个文件.

但我一直在file1到file5中出现完全相同的行顺序.随机生成过程无法正常工作.我会很感激任何建议.

#!/bin/bash
for i in seq 1 5
do
  awk 'BEGIN{srand();}  {print rand()"\t"$0}' shuffling.txt  | sort -k2 -k1 -n | cut -f2-  > file$i.txt
done
Run Code Online (Sandbox Code Playgroud)

输入shuffling.txt

111 1032192
111 2323476
111 1698881
111 2451712
111 2013780
111  888105
112 2331004
112 1886376
112 1189765
112 1877267
112 1772972
112  574631
Run Code Online (Sandbox Code Playgroud)

awk

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

在 bash 中创建直方图

编辑

我读过这个问题,这应该是(this one)的副本。我不同意。在那个问题中,目的是获得列中各个数字的频率。但是,如果我将该解决方案应用于我的问题,我仍然会遇到将特定范围内数字的频率分组到最终直方图的初始问题。即,如果该解决方案告诉我0.45is20.44is的频率1(对于我的输入数据),我仍然面临将这两个频率分组3为范围的总和的问题0.4-0.5

结束编辑

题-

我有一长列数据,其值介于 0 和 1 之间。这将是以下类型 -

0.34
0.45
0.44
0.12
0.45
0.98
.
.
.
Run Code Online (Sandbox Code Playgroud)

允许重复的一长列十进制值。

我正在尝试将其更改为直方图类型的输出,例如(对于上面显示的输入)-

0.0-0.1  0
0.1-0.2  1
0.2-0.3  0
0.3-0.4  1 
0.4-0.5  3
0.5-0.6  0
0.6-0.7  0
0.7-0.8  0
0.8-0.9  0
0.9-1.0  1
Run Code Online (Sandbox Code Playgroud)

基本上,第一列具有每个范围的下限和上限,第二列具有该范围内的条目数。

我把它(糟糕地)写成——

for i in $(seq 0 0.1 0.9)
do 
    awk -v var=$i '{if ($1 > var && $1 < var+0.1 ) print $1}' …
Run Code Online (Sandbox Code Playgroud)

bash awk loops histogram

3
推荐指数
2
解决办法
9629
查看次数

SED删除带有REGEX模式的行

我有几百个包含数千行的文件,我需要删除一些跟随模式的行,所以我用正则表达式去了SED.文件的结构是这样的

A,12121212121212,foo,bar,lorem
C,32JL,JL
C,32JL,JL
C,32JL,JL
C,32JL,JL
A,21212121212121,foo,bar,lorem
C,32JL,JL
C,32JL,JL
C,32JL,JL
A,9999,88888,77777
Run Code Online (Sandbox Code Playgroud)

我需要删除所有以" A " 开头并以" lorem " 结尾的行

预期产量 -

C,32JL,JL
C,32JL,JL
C,32JL,JL
C,32JL,JL
C,32JL,JL
C,32JL,JL
C,32JL,JL
A,9999,88888,77777
Run Code Online (Sandbox Code Playgroud)

我做了正则表达式:

^(A).*(lorem)
Run Code Online (Sandbox Code Playgroud)

它在我的文本编辑器中匹配(Sublime,UltraEdit)

在UNIX shell中

sed '/^(A).*(lorem)/d' file.txt
Run Code Online (Sandbox Code Playgroud)

但不知怎的,它不起作用,它显示整个文件,我无法弄清楚为什么.

有谁可以帮助我吗?

regex unix bash sed

3
推荐指数
2
解决办法
6981
查看次数

为什么复制慢于移动?

我有一个大文件,我正在移动.实验室中的正常协议是将其复制到某处然后将其删除.

我决定把它换成MV.

我的问题是,为什么mv比cp快得多?

为了测试它,我生成了一个2.7 GB的文件.

time cp test.txt copy.txt
Run Code Online (Sandbox Code Playgroud)

真正的0m20.113s

time mv test.txt copy.txt
Run Code Online (Sandbox Code Playgroud)

真正的0m12.403s.

TL; DR mv几乎是复制速度的两倍.有什么解释吗?这是预期的结果吗?

编辑-

我决定将文件夹移动/复制到当前文件夹以外的目的地.

time cp test.txt ../copy.txt 
Run Code Online (Sandbox Code Playgroud)

time mv test.txt ../copy.txt
Run Code Online (Sandbox Code Playgroud)

这次cp花了9.238s而mv只花了0.297s.所以不是一些答案所暗示的.

UPDATE

答案是对的.当我试图mv将文件复制到同一系统上不同的磁盘,mvcp采取了几乎相同的时间.

mv cp

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

一次从文件中挑出多行

不确定这是否可行但是这里 -

我有一个数字列表.

cat list
Run Code Online (Sandbox Code Playgroud)

输出 -

1
22
53
75
Run Code Online (Sandbox Code Playgroud)

我有一个500行(file.txt)的辅助文件.我想从该文件中挑选出第1行,第22行,第53行和第75行.

我目前所尝试的是 -

for i in `cat list`; do awk "NR==$i" file.txt ; done
Run Code Online (Sandbox Code Playgroud)

这可行,但它真的很慢(我的实际文件有50k +行).我想知道是否有更有效的解决方案.也许是一种阅读列表并在一个过程而不是4个过程中显示所有这些行的方法.

bash awk

0
推荐指数
1
解决办法
84
查看次数

标签 统计

bash ×4

awk ×3

cp ×1

histogram ×1

loops ×1

ls ×1

mv ×1

regex ×1

sed ×1

unix ×1