Ⅰ 在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