Nai*_*ita 25 shell sed awk shell-script text-processing
输入:
ARCHIVE B1_NAME B2_NAME B3_NAME ELEMENT INFO_NAM WERT PROCID
-------- -------- -------- -------- -------- -------- ---- ------
15MinAvg AIRSS 33-GIS DMDMGIS1 I MvAvr15m 1123 CP
15MinAvg AIRSS 33-GIS DMDMGIS1 P MvAvr15m 2344 CP
15MinAvg AIRSS 33-GIS DMDMGIS1 Q MvAvr15m 4545 CP
15MinAvg AIRSS 33-GIS DMDMGIS2 I MvAvr15m 6576 CP
15MinAvg AIRSS 33-GIS DMDMGIS2 P MvAvr15m 4355 CP
15MinAvg AIRSS 33-GIS DMDMGIS2 Q MvAvr15m 6664 CP
Run Code Online (Sandbox Code Playgroud)
输出:
ARCHIVE B1_NAME B2_NAME B3_NAME ELEMENT WERT
-------- -------- -------- -------- ------- ----
15MinAvg AIRSS 33-GIS DMDMGIS1 I 1123
15MinAvg AIRSS 33-GIS DMDMGIS1 P 2344
15MinAvg AIRSS 33-GIS DMDMGIS1 Q 4545
15MinAvg AIRSS 33-GIS DMDMGIS2 I 6576
15MinAvg AIRSS 33-GIS DMDMGIS2 P 4355
15MinAvg AIRSS 33-GIS DMDMGIS2 Q 6664
Run Code Online (Sandbox Code Playgroud)
我要删除的两列INFO_NAM
,并PROCID
从我的输入文件。
mtk*_*mtk 40
不要打印第6列和第8列
awk '{$6=$8=""; print $0}' file
Run Code Online (Sandbox Code Playgroud)
小智 25
这已经在 Stack Overflow 的其他地方之前得到了回答:
我相信这awk
是最好的。
awk '{print $1,$2,$3,$4,$5,$7}' file
Run Code Online (Sandbox Code Playgroud)
也可以使用cut
。
cut -f1,2,3,4,5,7 file
Run Code Online (Sandbox Code Playgroud)
删除列的最佳方法是使用cut
:
cut --complement -d' ' -f6,8 file
Run Code Online (Sandbox Code Playgroud)
解释:
-d
指定分隔符;在这种情况下,一个空格--complement
保留中指定的列以外的列 -f
-f
指定要剪切的列(而不是要保留的列,因为--complement
正在使用);在这种情况下,第 6 列和第 8 列从剪切手册页:
Run Code Online (Sandbox Code Playgroud)-d, --delimiter=DELIM use DELIM instead of TAB for field delimiter -f, --fields=LIST select only these fields; also print any line that contains no delimiter character, unless the -s option is specified --complement complement the set of selected bytes, characters or fields
如果将其集成到变量可能会更改的脚本中,您可以执行以下操作:
infile=myfile.txt
outfile=myfile_parsed.txt
deletecols=4-7 #using hyphen to specify a range
delimiter=' '
cut -d "$delimiter" -f "$deletecols" $infile > $outfile
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
180521 次 |
最近记录: |