找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29522|回复: 3

[文本处理] 批处理/sed/gawk中如何删除文本中每行里指定字符后的内容?

[复制链接]
发表于 2020-2-21 12:33:51 | 显示全部楼层 |阅读模式
本帖最后由 飞龙project 于 2020-2-21 13:03 编辑

下面是一个文件(节选),我想删除每行里以?开头的之后的内容
  1. #EXTM3U
  2. #EXT-X-VERSION:3
  3. #EXT-X-TARGETDURATION:20
  4. #EXT-X-MEDIA-SEQUENCE:0
  5. #EXTINF:17.760000,
  6. http://website/hls/junior/3/1CCMN4CC4D-hls0.ts?auth_key=1582255823-0-0-431c012620e68d9
  7. #EXTINF:6.440000,
  8. http://website/hls/junior/3/1CCMN4CC4D-hls1.ts?auth_key=1582255823-0-0-e68d8911766cc47
  9. #EXTINF:10.000000,
  10. http://website/hls/junior/3/1CCMN4CC4D-hls2.ts?auth_key=1582255823-0-0-02a02b662ed0ca8
  11. ·········
  12. #EXTINF:6.040000,
  13. http://website/hls/junior/3/1CCMN4CC4D-hls156.ts?auth_key=1582255823-0-0-4143e53286841c
  14. #EXT-X-ENDLIST
复制代码
变为:
  1. #EXTM3U
  2. #EXT-X-VERSION:3
  3. #EXT-X-TARGETDURATION:20
  4. #EXT-X-MEDIA-SEQUENCE:0
  5. #EXTINF:17.760000,
  6. 1CCMN4CC4D-hls0.ts
  7. #EXTINF:6.440000,
  8. 1CCMN4CC4D-hls1.ts
  9. #EXTINF:10.000000,
  10. 1CCMN4CC4D-hls2.ts
  11. ·········
  12. #EXTINF:6.040000,
  13. 1CCMN4CC4D-hls156.ts
  14. #EXT-X-ENDLIST
复制代码
其中保留以#开头的内容,谢谢了!
发表于 2020-2-21 13:54:45 | 显示全部楼层
  1. sed -i "s/\?.*$//" "xx.txt"
复制代码
发表于 2020-2-21 14:57:53 | 显示全部楼层
发表于 2020-2-21 18:02:06 | 显示全部楼层
不支持中文!!!有没有兴趣学下C!
  1. //Dec-C++ 5.11

  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <stdlib.h>

  5. int max=10240;

  6. FILE *fp(char *p_n,const char *mode);
  7. char *analyze(char *a);

  8. int main(int argc,char *argv[] )
  9. {
  10.         FILE *s_txt;
  11.         FILE *res_txt;
  12.         s_txt=(fp(argv[1],"r"));
  13.         res_txt=(fp(argv[2],"w"));
  14.         char arr[max]="0";
  15.         char *p=arr;
  16.         char temp[max]="0";
  17.         int i;
  18.         while (fgets(temp,max,s_txt)!=NULL)
  19.         {
  20.                 p=analyze(temp);
  21.                 fprintf(res_txt,"%s",p);
  22.         }
  23.         fclose(s_txt);
  24.         fclose(res_txt);
  25.         return 0;
  26. }
  27. FILE *fp(char *p_n,const char *mode)
  28. {
  29.         FILE *fp;
  30.         if ((fp = fopen(p_n,mode)) == NULL)
  31.         {
  32.                 printf("%s open fail!!",p_n);
  33.                 getchar();
  34.                 exit(0);
  35.         }
  36.         return fp;
  37. }

  38. char *analyze(char *a)
  39. {
  40.         static char res[1024]="0";
  41.         char *p=res;
  42.         if (a[0]=='#')   
  43.         {
  44.                 strcpy(res,a);
  45.                 return p;
  46.         }
  47.         char del='/';
  48.         int i,j=0;
  49.         for (i=0;a[i]!='\0';i++)
  50.         {
  51.                 if (a[i]==del) j=0;
  52.                 if (a[i]!='?' && a[i]!=del)
  53.                 {
  54.                         *(p+j)=a[i];
  55.                         j++;
  56.                 }
  57.                 else if (a[i]=='?')
  58.                 {
  59.                         *(p+j)='\n';
  60.                         *(p+j+1)='\0';
  61.                         return p;
  62.                 }

  63.         }
  64.         strcpy(res,a);
  65.         return p;

  66. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 14:24 , Processed in 0.017337 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表