从文件末尾删除,直到您看到带有sed / awk的数字或字母

时间:2018-01-17 15:34:49

标签: awk sed

我有一个以数字,字符或逗号结尾的文件:

file1.txt
1 101 111 BCX A@WWW 123
1 101 111 BCX A@WWW 123;;;;;;
1 298 306 CCC A@QQQ 234-ck
1 298 306 CCC A@QQQ 234-ck;
1 298 306 CCC A@QQQ 234-ck ;;
1 299 308 CCD A@QQQ 234-cJ
1 299 309 DDD A@ZZZ 345;678
1 299 309 DDD A@ZZZ 345;678

输出应为:

    1 101 111 BCX A@WWW 123
    1 101 111 BCX A@WWW 123
    1 298 306 CCC A@QQQ 234-ck
    1 298 306 CCC A@QQQ 234-ck
    1 298 306 CCC A@QQQ 234-ck 
    1 299 308 CCD A@QQQ 234-cJ
    1 299 309 DDD A@ZZZ 345;678
    1 299 309 DDD A@ZZZ 345;678

我所做的只从最后删除一个逗号:

cat file1.txt | sed 's/;$//g'

1 101 111 BCX A@WWW 123
1 101 111 BCX A@WWW 123;;;;;
1 298 306 CCC A@QQQ 234-ck
1 298 306 CCC A@QQQ 234-ck
1 298 306 CCC A@QQQ 234-ck ;
1 299 308 CCD A@QQQ 234-cJ
1 299 309 DDD A@ZZZ 345;678
1 299 309 DDD A@ZZZ 345;678

如何从文件末尾删除所有&#34 ;;"直到我看到一个字母/数字?

1 个答案:

答案 0 :(得分:2)

修改你的sed,不需要猫

sed 's/;*$//' infile

使用awk

awk '{sub(/;*$/,"")}1' infile