Board logo

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

作者: 飞龙project    时间: 2020-2-21 12:33     标题: 批处理/sed/gawk中如何删除文本中每行里指定字符后的内容?

本帖最后由 飞龙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
复制代码
其中保留以#开头的内容,谢谢了!
作者: zaqmlp    时间: 2020-2-21 13:54

  1. sed -i "s/\?.*$//" "xx.txt"
复制代码

作者: 窄口牛    时间: 2020-2-21 14:57


作者: Gin_Q    时间: 2020-2-21 18:02

不支持中文!!!有没有兴趣学下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. }
复制代码





欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2