Ⅰ 在linux命令行中,怎么样从一行字符中输出指定格式的字符串
command | sed 's#.*\([0-9][0-9]:[0-9][0-9]\).*#\1'
# command是你那条输出的命令,将结果用管道传递给sed,匹配 nn:nn 这样的格式
Ⅱ 总结linux替换字符串的几种方法
一)通过vi编辑器来替换。
vi/vim 中可以使用 :s 命令来替换字符串。
:s/well/good/ 替换当前行第一个 well 为 good
:s/well/good/g 替换当前行所有 well 为 good
:n,$s/well/good/ 替换第 n 行开始到最后一行中每一行的第一个 well 为 good
:n,$s/well/good/g 替换第 n 行开始到最后一行中每一行所有 well 为 good
n 为数字,若 n 为 .,表示从当前行开始到最后一行
:%s/well/good/(等同于 :g/well/s//good/) 替换每一行的第一个 well 为 good
:%s/well/good/g(等同于 :g/well/s//good/g) 替换每一行中所有 well 为 good
可以使用 # 作为分隔符,此时中间出现的 / 不会作为分隔符
:s#well/#good/# 替换当前行第一个 well/ 为 good/
:%s#/usr/bin#/bin#g 可以把文件中所有路径/usr/bin换成/bin
(二)直接替换文件中的字符串。(此法不用打开文件即可替换字符串,而且可以批量替换多个文件。)
1.perl命令替换,参数含义如下:
-a 自动分隔模式,用空格分隔$_并保存到@F中。相当于@F = split ”。分隔符可以使用-F参数指定
-F 指定-a的分隔符,可以使用正则表达式
-e 执行指定的脚本。
-i<扩展名> 原地替换文件,并将旧文件用指定的扩展名备份。不指定扩展名则不备份。
-l 对输入内容自动chomp,对输出内容自动添加换行
-n 自动循环,相当于 while(<>) { 脚本; }
-p 自动循环+自动输出,相当于 while(<>) { 脚本; print; }
用法示例:
perl -p -i.bak -e 's/foo/bar/g' *.c
将所有C程序中的foo替换成bar,旧文件备份成.bak
perl -p -i -e "s/shan/hua/g" ./lishan.txt ./lishan.txt.bak
将当前文件夹下lishan.txt和lishan.txt.bak中的“shan”都替换为“hua”
perl -i.bak -pe 's/(d+)/ 1 + $1 /ge' file1 file2
将每个文件中出现的数值都加一
2.sed命令下批量替换文件内容
格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径` 文件名
-i 表示inplace edit,就地修改文件
-r 表示搜索子目录
-l 表示输出匹配的文件名
s表示替换,d表示删除
示例:sed -i "s/shan/hua/g" lishan.txt
把当前目录下lishan.txt里的shan都替换为hua 各个Linux详细命令介绍及应用可如下进行查找
Ⅲ Linux下字符串截断符是什么
是不是"*fo"喔..
说实在的LINUX我还真的很少去接触过. 答案补充 我更想问你为什么会去理解这个如此费解的东西呢>??
WINS 的字符串确实有%00的字符串数字.但这个是变量也... 答案补充 function trimBody($theText, $lmt=500, $s_chr="\n", $s_cnt=2)
一个实现字符串 截断的函数。
function trimBody($theText, $lmt=500, $s_chr="\n", $s_cnt=2) {
$pos = 0;
$trimmed = FALSE;
for ($i = 1; $i <= $s_cnt; $i ) {
if ($tmp = strpos($theText, $s_chr, $pos 1)) {
$pos = $tmp;
$trimmed = TRUE;
} else {
$pos = strlen($theText) - 1;
$trimmed = FALSE;
break;
} 答案补充 }
$theText = substr($theText, 0, $pos);
if (strlen($theText) > $lmt) {
$theText = substr($theText, 0, $lmt);
$theText = substr($theText, 0, strrpos($theText," "));
$trimmed = TRUE;
}
if ($trimmed) $theText .= "...";
return $theText;
} 答案补充 http://www.diybl.com/course/6_system/linux/linuxjq/2007211/16882.html
我也没有想过跟你吵的意思.
我能力有限喔..只能给你找资料..
你参考吧.关于LINUX的..我不了解... 答案补充 晕咯..要让我去编译LINUX这个第8个元素..我要三个月.不吃不喝不睡觉..
而且是系统自加的..那我只能说..除非我拿到LINUX开发商的资源.. 答案补充 小弟无能..尽力了..不敢当..以后要好好专心研究下LINUX 答案补充 - -!那个好像是变量吧...
Ⅳ Linux 命令,查看字符是否出现在某字符串中
从文件内容查寻匹配指定字符串的行:
$ grep "被查寻的字符串" 文件名
从文件内容查寻与正则表达式匹配的行:
$ grep –e “正则表达式” 文件名
查寻时不区分大小写:
$ grep –i "被查寻的字符串" 文件名
查寻匹配的行数:
$ grep -c "被查寻的字符串" 文件名
从文件内容查寻不匹配指定字符串的行:
$ grep –v "被查寻的字符串" 文件名
从根目录开始查寻所有扩展名为.log的文本文件,并找出包罗”ERROR”的行
更多请网络一下 linux查找字符串
Ⅳ 在linux中查找字符串用什么命令
Linux查找字符串用grep命令,可以查找文件,也可以在命令的结果中查找。如果是在文件中查找字符串,用法是:
grep 用英文单引号括起来的字符串 文件名
如果是在命令的显示结果中查找,需要用管道符将命令与grep连接起来,像这样:
last | grep 'root'
(在last命令的显示结果中查找字符串root)
Ⅵ linux如何获取两个字符串之间的内容
你可以使用linux cut 选取命令。
方法:
1. 你把上面三行写入一个文件中 vim file
2. 测试cut命令 你的shell输入:cut -d '=' -f 2 file
解释:以=为分隔符,获取第二部分,获取=后面的部分
3. 熟悉cut命令后,你在shell输入
cut -d '=' -f 2 file | cut -d '"' -f 1
解释:第一次执行的输出作为管道命令 | 后面命令的参数。
获取第一个 = 后面的部分,再获取第一个 " 前面的部分。
你可以搜索linux cut命令
Ⅶ linux c语言字符串比较问题
linux中,c语言字符串比较采用strcmp()函数
在linux命令行下,man strcmp,可以看到函数说明:
$manstrcmp
...
NAME
strcmp,strncmp-comparetwostrings
SYNOPSIS
#include<string.h>
intstrcmp(constchar*s1,constchar*s2);
DESCRIPTION
Thestrcmp().Itreturnsanintegerlessthan,equalto,orgreaterthanzeroifs1isfound,respectively,tobelessthan,tomatch,orbegreaterthans2.
strcmp函数比较两个字符串s1和s2.函数返回小于0,等于0,或大于0的整数,分别对应s1<s2,s1=s2,s1<s2.
比如 s1 = "good" s2="...this is good", 从s2取后四位进行两个字符串比较,代码如下:
#include<stdio.h>
#include<string.h>
intmain()
{
char*s1="good",*s2="...thisisgood";
intlen=strlen(s2);
if(len>=4)//如果串长超过4位,则移动指针到最后四位的位置
s2=s2+len-4;
printf("s2=%s ",s2);//输出移位后的字符串内容
printf("compares1,s2=%d ",strcmp(s1,s2));//输出0,表示相同
return0;
}
Ⅷ linux有什么命令可以提取指定的字符串
1. 例子
提取字符串以下字符串 error: 与 : 之间的子字符串。并消除空格。
"src/network/misc/nv_net_udp.c:17:fatalerror:nv_net_tools.h:Nosuchfileordirectory"1
2. 命令
echo"src/network/misc/nv_net_udp.c:17:fatalerror:nv_net_tools.h:Nosuchfileordirectory"|sed-r's/.*error:(.*):.*/1/'|seds/[[:space:]]//g1
该命令涉及 sed 命令的’反向引用’章节, 1 代表 (.*)
3. 结果
nv_net_tools.h1
4. 拓展 : 解决编译错误
leon$makeclean&&makeallarm-hisiv100nptl-linux-gcc-c-fPIC-Wall-g-ggdb-O0-DHI3518_CHIP-DLINUX-I./src/include-I./src/include/common-I./src/include/camera-I./src/include/conf-I./src/include/log-I./src/include/network-I./src/include/upnp-I/home/leon/nvc/arm-hisiv100nptl-linux/includesrc/common/nv_conf.c-obuild/objs/hi3518/src/common/nv_conf.o/*省略中间部分*/arm-hisiv100nptl-linux-gcc-c-fPIC-Wall-g-ggdb-O0-DHI3518_CHIP-DLINUX-I./src/include-I./src/include/common-I./src/include/camera-I./src/include/conf-I./src/include/log-I./src/include/network-I./src/include/upnp-I/home/leon/nvc/arm-hisiv100nptl-linux/includesrc/network/misc/nv_net_udp.c-obuild/objs/hi3518/src/network/misc/nv_net_udp.o
src/network/misc/nv_net_udp.c:17:fatalerror:nv_net_tools.h:Nosuchfileordirectory
compilationterminated.make:***[build/objs/hi3518/src/network/misc/nv_net_udp.o]Error112345678
note: 在以上编译过程中我们发现,编译器提示说找不到nv_net_tools.h文件,而现实中我们也不需要这个文件的包含了,需要删除包含nv_net_tools.h 文件中的该行代码。
5.字符串提取 (命令行)
目标字符串
"from":"0802070975","to":"0802071013","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":012
需要提取 from , to, url , md5, level 等5个关键字后面的内容。
//提取 from 内容echo
"from":"0802070975","to":"0802071013","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0|sed"s/.*from:(.*)/1/"|cut-d','-f1
//提取 to 内容echo
"from":"0802070975","to":"0802071013","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0|sed"s/.*to:(.*)/1/"|cut-d','-f1
//提取 url 内容echo
"from":"0802070975","to":"0802071013","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0|sed"s/.*url:(.*)/1/"|cut-d','-f1
//提取 md5 内容echo
"from":"0802070975","to":"0802071013","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0|sed"s/.*md5:(.*)/1/"|cut-d','-f1
//提取 level 内容echo
"from":"0802070975","to":"0802071013","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0|sed"s/.*level:(.*)/1/"|cut-d','-f112345678910111213141516
6.字符串提取 (脚本文件)
ret_val=""from":"0804020982","to":"0804020998","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0"
echoret_valis:[$ret_val]from="$(echo$ret_val|sed's/.*from":(.*)/1/'|cut-d','-f1|sed's/"//g')"
echofrom:$from
to="$(echo$ret_val|sed's/.*to":(.*)/1/'|cut-d','-f1|sed's/"//g')"
echoto:$to
url="$(echo$ret_val|sed's/.*url":(.*)/1/'|cut-d','-f1|sed's/"//g')"
echourl:$url
md5="$(echo$ret_val|sed's/.*md5":(.*)/1/'|cut-d','-f1|sed's/"//g')"
echomd5:$md5
level="$(echo$ret_val|sed's/.*level":(.*)/1/'|cut-d','-f1|sed's/"//g')"
echolevel:$
执行结果:
ret_valis:["from":"0804020982","to":"0804020998","url":"http://cn.update.mynetvue.com:8060/firmware/.tar.gz","md5":"","level":0]
from:0804020982
to:0804020998
url:http://cn.update.mynetvue.com:8060/firmware/.tar.gzmd5:
level:0
I.总结
要注意命令行执行,与脚本文件执行之间的差异性。
Ⅸ Linux字符串截取几种方法
简单介绍下Shell字符串截取的详细方法,如截取指定字数、按指定的字符串截取、按指定要求分割。
一、Linux shell 截取字符变量的前8位,有方法如下:
Ⅹ linux 中c语言字符串的结束符是什么
c语言的字符串是一种标准
不管是在何种操作系统下它的定义都是一样的
而c语言字符串的结束符是数字0
可以通过一个简单的程序来观看
#include<stdio.h>
intmain(intargc,char**argv)
{
chars[]="hello";
inti;
for(i=0;i<sizeof(s);++i)
printf("s[%d]=%d ",i,s[i]);
return0;
}
输出的结果为
s[0] = 104
s[1] = 101
s[2] = 108
s[3] = 108
s[4] = 111
s[5] = 0
可以看出结束符正是数字0