簡體   English   中英

awk刪除數字后的字符

[英]awk remove characters after number

我正在編寫一個AWK腳本來清理數據流,以便可用於分析。 現在,我有以下問題。

我有一個看起來像這樣的數據流:

56, 2
64, 3
72, 0
80, -1-
88, -3--
96, 1
04, -2-
12, -7----
20, -1-
28, 7
36, 1
44, -3--
52, 3
60, 0
68, 0
76, -3--
84, -5---
92, 1
00, 4
08, 3
16, -2-
24, -3--
32, 1
40, 3

我想刪除數字字符后出現的任何破折號,將減號保持在數字前面,因此它看起來像這樣:

56, 2
64, 3
72, 0
80, -1
88, -3
96, 1
04, -2
12, -7
20, -1
28, 7
36, 1
44, -3
52, 3
60, 0
68, 0
76, -3
84, -5
92, 1
00, 4
08, 3
16, -2
24, -3
32, 1
40, 3

我知道如何使用sed(sed's /-* $ //'),但是如何僅使用awk才能做到這一點,這樣我就可以在腳本中使用它了? 干杯

一種方法,只需使用sub()

awk '{ sub(/-+$/, "", $NF); print }' infile

它產生:

56, 2
64, 3
72, 0
80, -1
88, -3
96, 1
04, -2
12, -7
20, -1
28, 7
36, 1
44, -3
52, 3
60, 0
68, 0
76, -3
84, -5
92, 1
00, 4
08, 3
16, -2
24, -3
32, 1
40, 3

使用awk:

awk -F '-+$' '{$1=$1} 1' file

使用sed:

sed -i.bak 's/-*$//' file

另一個可能的解決方案:

awk -F "-+$" '{str=""; for(i=1; i<=NF; i++){str=str""$i} print str}' file

但是,在這種情況下,我認為sed是更好的解決方案。

問候,伊德里斯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM