如何用shell提取文件中指定的字符串

 我来答
就烦条0o
2016-04-12 · 知道合伙人软件行家
就烦条0o
知道合伙人软件行家
采纳数:33315 获赞数:46487
从事多年系统运维,喜欢编写各种小程序和脚本。

向TA提问 私信TA
展开全部
cat test.txt 
aa1abc <don't mind> aa101xxyy ><12don't look at me>< aa40abc qwert aa20xxyy ...

如果aa是固定的,那把aa替换为换行符不就转换成了一个多行的文本?
sed 's/aa/\n/g' test.txt 

1abc <don't mind> 
101xxyy ><12don't look at me>< 
40abc qwert 
20xxyy ...


然后多行文本只保留每行开头的数字不就行了?
sed 's/aa/\n/g' test.txt |sed -re 's/[^0-9]*([0-9]*).*$/\1/;'

1
101
40
20


最后如果你一定要还原成一行,那就用awk打印一下?
sed 's/aa/\n/g' test.txt |sed -re 's/[^0-9]*([0-9]*).*$/\1/;'|awk '{printf("%s ", $0)}'
电商运营的机会
2017-06-05 · 知道合伙人互联网行家
电商运营的机会
知道合伙人互联网行家
采纳数:436 获赞数:998
潭州教育网络科技有限公司最佳电商运营总监。

向TA提问 私信TA
展开全部

代码如下:

#include "stdio.h"//
#include "string.h"//
#include "stdlib.h"//
void main(void){
FILE *pR,*pW;
char CoStr[20],ln,ch,i=0;
if(!(pR=fopen("ABC.txt","r"))){
printf("源文件打开失败...");
exit(0);
}
printf("请输入特定字符串...\nCoStr=");
ln=strlen(gets(CoStr));
do{
fseek(pR,-i,SEEK_CUR);
for(i=0;i<ln;i++)
if((ch=getc(pR))!=CoStr[i]) break;
if(ch==EOF){
printf("没有发现特定字符串%s!\n",CoStr);
exit(0);
}
}while(i<ln);

if(!(pW=fopen("XYZ.txt","w"))){
printf("创建目标文件失败...");
exit(0);
}
while((ch=getc(pR))!='"' && ch!=(char)176);
while((ch=getc(pR))!='"' && ch!=(char)177){
if(ch=='\n' || ch==' ') continue;
putc(ch,pW);
}

fclose(pW);
fclose(pR);
printf("文件已成功建立,名为XYZ.txt\n");
}

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式