echo $url | cut -d , -f 1。
cut是切割命令,-d表示分隔符,这里是逗号,-f表示取第几个,这里是第一个。
注意和数组不一样,数组是取第0个。
在程序当前目录下建一个txt文件bill.txt,文件内录入以下内容:。
<pay_flowid>CTC4789</pay_flowid>。
<>嗨,百度知道<dd>。
<he和> hello linux。
运行程序后在当前目录下生成str.txt文件,可以提取。
程序代码如下:
#include <stdio.h>。
#include <string.h>。
#include <sys/types.h>。
#include <sys/stat.h>。
#include <fcntl.h>。
#define LEN 100 /* 字符数,可以根据需要自己定义 */。
int main(void)
int fd;
long len,i,flag,j;。
char num[LEN],string[LEN];。
fd = open("bill.txt",O_RDWR);。
len = read(fd,num,LEN); /* read string for bill.txt */。
num[len] = '\0';。
close(fd);
for(i=0,j=0;i<len;i++)。
switch(num[i])
case '<':
flag=1;
break;
case '>':
flag=2;
break;
default:
if(flag==2)
string[j]=num[i];。
j++;
string[j] = '\0';。
fd = open("str.txt",O_RDWR|O_CREAT,S_IRUSR|S_IWUSR);。
if(fd)
write(fd,string,j);。
close(fd);
return 0;
文件中保存的数据有实型有整型,则在读取数据时,均按浮点数据读取就好了。
参考代码:
#include <stdio.h>。
int main()
FILE *fp ;
int i,n;
double a[100];。
fp=fopen("data.txt", "r") ;。
if ( !fp )
{
printf("open file error");。
return -1;。
}
i=0;
while( i<100 ) //控制不能超过数组的大小。
{
if ( fscanf(fp, "%lf",&a[i] )!= 1 ) //按浮点数读取数据。
break;。
i++;
}
n=i;
for( i=0;i<n;i++ ) //输出读到的结果。
printf("%g\n", a[i] );。
fclose(fp);。
return 0;
//代码已测,我用的是一位数组,没必要用二维数组。
#include <stdio.h>。
main()
char buf[100] = {0};。
int len;
FILE* f = NULL;。
printf("read from file? y/n\n");。
if (getchar() == 'y')。
{
if ((f = fopen("1.txt", "rb")) == NULL)。
{ printf("open file failed."); return; }。
len = fread(buf, 1, sizeof(buf), f);。
if (len) { printf("%s\n", buf); }。
fclose(f);。
}
else
{
printf("input your words:\n");。
scanf("%s", buf);。
if ((f = fopen("1.txt", "ab+")) == NULL)。
{ printf("open file failed."); return; }。
//find word length。
for (len = 0; len < (sizeof(buf) - 1); len++)。
if (buf[len] == 0 && buf[len + 1] == 0)。
{ break; }。
len = fwrite(buf, 1, len, f);。
fclose(f);。
}
用basename命令去除前面的路径得到dirtmp。
EXE=`basename $PWD`。
注意:是反引号,键盘上ESC下方的那个按键。
这里$PWD是用的环境变量,也可以用pwd命令取得当前路径。
EXE=$(basename $(pwd))。
$( ) 相当于一对反引号,在多重嵌套的情况下,使用$( ) 更直观,不容易搞错。