2017-05-30 17 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

もっとシンプルすぎawkでは使用sed

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

'\ +'はGNU sed-yに依存することに注意してください代わりに '\ {1、\}'を使うか、 '-E'スイッチを追加して' + 'を使うことができます。 –

0

試みは:ダッシュまで

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

グローバル置換アルファベットは( - )NULL、その後、ここにINPUT_FILEを言及します。 sedを使用して

0

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

このコードでは質問に答えることができますが、問題の解決方法や理由についての追加の文脈を提供すると、回答の長期的価値が向上します。 – Badacadabra

0

は、2つの文字とダッシュを削除します。 Perlスクリプト言語を使用して

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

#!/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 
関連する問題