如何从目录中的所有 .asc 文件中删除包含“=”和“历史”(始终大写)的行以及所有空行?
我认为它会是这样的:
for file in /media/linux/DATADISK/*.asc
do
sed '/=/d'
sed '/HISTORY/d'
done
Run Code Online (Sandbox Code Playgroud) How can I print the filename and the result of 1/2*(a+b)
, where a
is the 1st field of the 2nd line and b
is the 1st field of the last line please? I do not know how to save the values into variables as constants. Many thanks
awk -v a=$(NR==2{print $1}) b=$(END(print $1)) '{print FILENAME, 1/2*(a+b)}' rv*.out
Run Code Online (Sandbox Code Playgroud)
file1
4 5 6
14545.5886 2 6
2 3 5
45457.5462 8 6
Run Code Online (Sandbox Code Playgroud)
file2
1 2
34441.4545 8
6 8
8 8 …
Run Code Online (Sandbox Code Playgroud) 如何根据第二列中的数字将文件 1 中的第一列与文件 2 匹配?
k002 25
k004 54
k003 23
Run Code Online (Sandbox Code Playgroud)
25 h
23 j
54 hg
Run Code Online (Sandbox Code Playgroud)
k002 25 h
k003 23 j
k004 54 hg
Run Code Online (Sandbox Code Playgroud)
我不知道该怎么做,也没有找到类似的问题。
awk 'matching {print ... $1, $2}' file1 file2 > file_des
Run Code Online (Sandbox Code Playgroud) 这是错误的:
for f in a*.dat; do
awk '.....' file1 "$f" > temp
awk '.....' temp > "$f_out"
done
Run Code Online (Sandbox Code Playgroud)
我想使用 a*.dat 作为输入,然后作为带有后缀 _out 的输出。非常感谢
我有一个文件:
50102.5924 4.2599 4.2184 1.0098 4.2392
50103.5903 4.2895 4.2474 1.0099 4.2685
50107.5850 4.2100 4.2286 0.9956 4.2193
50108.5331 4.1477 4.1112 1.0089 4.1295
50108.7620 4.0770 4.1060 0.9929 4.0915
50109.5345 4.2227 4.2153 1.0018 4.2190
50109.7681 4.1677 4.1673 1.0001 4.1675
50110.5308 4.2333 4.3158 0.9809 4.2746
50110.7612 4.2339 4.2743 0.9905 4.2541
50111.5591 4.1330 4.1542 0.9949 4.1436
50112.5324 4.1417 4.0986 1.0105 4.1202
50112.7668 4.0075 3.9844 1.0058 3.9960
50113.5301 4.2147 4.2147 1.0000 4.2147
50113.7639 4.2263 4.2263 1.0000 4.2263
50114.5321 4.1205 4.1211 0.9999 4.1208
Run Code Online (Sandbox Code Playgroud)
还有很多文件:
4.5149 50102.5924 72.220 …
Run Code Online (Sandbox Code Playgroud)