删除特定字符
问题描述:
如何使用awk或任何命令删除' - '和' - '之前的字符?删除特定字符
XR-234|YYY|YYY|IR-567
YYYY|GT-890|YYYY|YYYY
OUTPUT:
234|YYY|YYY|567
YYYY|890|YYYY|YYYY
答
awk 'BEGIN{FS=OFS="|"}{for(i=1;i<=NF;i++) gsub(/^[^-]+-/,"",$i)}1' inputfile
FS
和OFS
被设置为 “|”在BEGIN块内。然后对每个字段进行更换和打印,使用gsub
函数。
答
更简单,当使用sed
sed 's/[^|]\+-//g' inputfile
答
尝试在AWK太:
awk '{gsub(/[a-zA-Z]+-/,"")} 1' Input_file
全球代字母,直到破折号( - )为NULL,然后在这里提INPUT_FILE。
答
移除两个字符和破折号。
awk '{gsub(/..-/,"")}1' file
234|YYY|YYY|567
YYYY|890|YYYY|YYYY
+0
尽管此代码可能会回答问题,但提供有关如何解决问题和/或为何解决问题的其他上下文可以提高答案的长期价值。 – Badacadabra
答
$ awk '{gsub(/[^|-]+-/,"")}1' file
234|YYY|YYY|567
YYYY|890|YYYY|YYYY
答
使用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
请注意'\ +'依赖于GNU sed - y你可以使用'\ {1,\}'或添加'-E'开关并使用'+'。 –