2017-05-30 156 views
0

如何使用awk或任何命令刪除' - '和' - '之前的字符?刪除特定字符

XR-234|YYY|YYY|IR-567 
YYYY|GT-890|YYYY|YYYY 

OUTPUT:

234|YYY|YYY|567 
YYYY|890|YYYY|YYYY 

回答

2
awk 'BEGIN{FS=OFS="|"}{for(i=1;i<=NF;i++) gsub(/^[^-]+-/,"",$i)}1' inputfile 

FSOFS被設置爲 「|」在BEGIN塊內。然後對每個字段進行更換和打印,使用gsub函數。

0

更簡單,當使用sed

sed 's/[^|]\+-//g' inputfile 
+3

請注意'\ +'依賴於GNU sed - y你可以使用'\ {1,\}'或添加'-E'開關並使用'+'。 –

0

嘗試在AWK太:

awk '{gsub(/[a-zA-Z]+-/,"")} 1' Input_file 

全球代字母,直到破折號( - )爲NULL,然後在這裏提INPUT_FILE。

0

使用sed

sed 's/[^|]*-//g' fil 
+0

儘管此代碼可能回答這個問題,但提供有關如何解決問題和/或爲何解決問題的其他上下文會提高答案的長期價值。 – Badacadabra

0

移除兩個字符和破折號。

awk '{gsub(/..-/,"")}1' file 

234|YYY|YYY|567 
YYYY|890|YYYY|YYYY 
+0

儘管此代碼可能會回答問題,但提供有關如何解決問題和/或爲何解決問題的其他上下文可以提高答案的長期價值。 – Badacadabra

0
$ awk '{gsub(/[^|-]+-/,"")}1' file 
234|YYY|YYY|567 
YYYY|890|YYYY|YYYY 
0

使用Perl腳本語言,

#!/use/bin/Perl 
use warnings; 
use strict; 
while(<>){ 
    s/(\w)*-//; 
    print; 
} 

執行此腳本如下, perl的script.pl your_test_file

這使你的期望輸出,

234|YYY|YYY|567 
YYYY|890|YYYY|YYYY