对于以下示例数据,两列都是数字,但第二列的位数不同。
2 9
1 1000
1 50
3 0
Run Code Online (Sandbox Code Playgroud)
我想根据两列进行排序。用数字标志分别指定它们-n,产生我想要的结果。
sort -n -k1,1 -k2,2 num.data.txt
Run Code Online (Sandbox Code Playgroud)
给
1 50
1 1000
2 9
3 0
Run Code Online (Sandbox Code Playgroud)
这就是我想要的。
然而,
sort -n -k1,2 num.data.txt
Run Code Online (Sandbox Code Playgroud)
给出似乎按字母顺序排序的数据:
1 1000
1 50
2 9
3 0
Run Code Online (Sandbox Code Playgroud)
我知道这sort -n -k1,2 num.data.txt与sort -n num.data.txt只有两列时(给出相同结果)相同,但我实际使用的数据有更多列。
为什么这两种方法之间存在这种差异?
我有一个值列表,例如:
1
2
3
4
Ak123
Ak23
Ak147
1Apple
2Apricot
3Mango
4Orange
Run Code Online (Sandbox Code Playgroud)
我只想执行一个简单的 grep 命令来只列出数字。即1, 2,3和4。我试过这个命令 -
grep -Ein --color '^\s*[0-9]' test.txt
Run Code Online (Sandbox Code Playgroud)
但它也返回字母数字。相反,我尝试通过以下命令省略字符:
grep -Ein --color '^\s*[0-9][^A-Z]' test.txt
Run Code Online (Sandbox Code Playgroud)
但它给出了 0 个结果。
我正在尝试生成一个逗号分隔的1 到 10 之间整数的无序列表,我尝试了以下操作,但结果是一个有序列表:
seq -s "," 10 | shuf
Run Code Online (Sandbox Code Playgroud) 失败时如何将数字序列分配到 bash 变量中:
$ n={0..9}; echo $n
{0..9}
$ n=\"{0..9}\"; echo $n
"{0..9}"
$ eval n={0..9}; echo $n
$ eval n=\"{0..9}\"; echo $n
9
$ n=`eval {0..9}`; echo $n
bash: 0: command not found
Run Code Online (Sandbox Code Playgroud)
请指导正确的
考虑以下foo.dat包含 11 列的文件:
893 1 754 946 193 96 96 293.164 293.164 109.115 70.8852
894 1 755 946 192 95 96 291.892 292.219 108.994 70.821
895 1 755 947 193 95 97 290.947 291.606 109.058 70.5709
896 1 755 947 193 95 97 290.002 290.663 109.122 70.5053
897 1 755 948 194 95 98 289.057 290.057 109.187 70.2532
898 1 754 949 196 96 99 288.444 289.456 109.44 70
899 1 754 950 197 96 100 287.501 288.862 …Run Code Online (Sandbox Code Playgroud) 如果数字是 12 位,sed 命令删除前导 91
我的文件是
919876543210
917894561230
9194561230
Run Code Online (Sandbox Code Playgroud)
需要输出
9876543210
7894561230
9194561230
Run Code Online (Sandbox Code Playgroud) 我需要找到文件中每个条目的最大值和最小值:
#subset of my file
NEUTRON 20.900103
PION- 0.215176
PION- 22.716532
NEUTRON 8.043279
PION+ 1.374297
PION- 0.313350
PION+ 0.167848
Run Code Online (Sandbox Code Playgroud)
当有多个条目名称时,如何循环遍历文件并找到每个名称的最小值和最大值。我已经使用 awk 来计算每个条目并且没有重复,但是每个名称的每个重复都包含一个数字,而该数字就是我试图过滤掉每个条目的最大值和最小值的数字。整个文件的 ex 输出:
Name Count Minimum Maximum
-------- ----- --------- ---------
KAON- 1 5.489958 5.489958
NEUTRON 2 8.043279 20.900103
PHOTON 10 0.034664 1.897264
PION- 5 0.192247 22.716532
PION+ 7 0.167848 7.631051
PROTON 1 1.160216 1.160216
Run Code Online (Sandbox Code Playgroud) 我在每一行“年龄= 22 岁,身高= 6 英尺”中有一个具有以下表达式类型的文件,我只想提取年龄和身高数字。
我试过了
grep -oP '(?<=Age=)[^years]+' $f | awk '{ printf "%d \n",$1; }
Run Code Online (Sandbox Code Playgroud)
并正确获取年龄。我怎样才能得到年龄和身高。当我尝试嵌套模式匹配时,我只得到高度。
这是我试过的模式
grep -oP '(?<=Age=)[^years]+.+(?<=Height=)[^feet]+' $f | awk '{ printf "%d \n",$1; }
Run Code Online (Sandbox Code Playgroud) 在这里,我有一个数据,我将使用 Gnuplot 用线条绘制该数据。使用代码
pl 'Sphere_ISOTEST_data.txt' w p
Run Code Online (Sandbox Code Playgroud)
我得到下图
但是,使用
pl 'Sphere_ISOTEST_data.txt' w l
Run Code Online (Sandbox Code Playgroud)
我得到以下信息:
任何人都可以建议如何对数据进行排序,以便我可以绘制w l并仅获得圆的周长。
我需要一个在每个数据点之前和之后插入零的脚本。我正在尝试在 Ubuntu 中执行此操作。
例子:
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
我需要的:
0
1
0
0
2
0
0
3
0
0
4
0
0
5
0
Run Code Online (Sandbox Code Playgroud)