① 如何用shell提取文件中指定的字元串
shell讀取文件的指定行字元串
在得到數行輸出時,需要得到指定行的欄位,可以使用該指令。
sed -n Np 文件名
如sed -n 2p xxx 輸出結果即為第二行的內容
在shell腳本中有時需要按行讀出文件的內容,比如文件中每一行的命令等。
假設存在文件filename,需要從中按行讀取內容,並在每行的開頭增加字元串command,命令如下
cat filename | while read line; do echo "command $line"; done!
② 利用shell腳本如何提取一個文件中某一特定行和下面若干行的內容
1、在linux目錄/root下建立一個txt文件,內容如下,使用|豎線分割,作為我們的實驗數據樣本。
③ 怎麼用批處理腳本查找文本中特定的字元
@echo off
for /f "delims=" %%a in (test.txt) do (
echo "%%a"|find "num_a" &&echo %%a >>newtest.txt
)
echo end...
pause
④ shell腳本 中如何截取文件名中的指定字元串
linux85:~ # date=`echo "abcd(111222333)" | awk -F "(" '{print $2}'`
linux85:~ # echo $date
111222333)
linux85:~ # echo $date|awk '{print substr($0,1,9)}'
111222333
⑤ 用批處理腳本如何提取多個txt文本中含指定字元串/關鍵詞的行,並寫入一個新的Excel文件中
BAT與源文件放在一起執行。
導出TXT,自行用EXCEL打開另存。
導出的TXT與源文件不要放在同一目錄。
@echooff
(for/f"delims="%%ain('dir/a-d/s/b*.txt')dofor/f"delims="%%bin('type"%%a"^|find/i"error"')doecho;%%~na%%b)>"D:out.TXT"
⑥ windows腳本 查找文件中的字元串 ,如果有指定的字元串就執行某個命令
這根本不需要for命令啊,直接find或findstr命令就可以了。下面我用find命令寫一個
find"(0roweffected)"a.txt&&b.bat
⑦ lua腳本怎麼取出自己想要的的部分字元
你好,以前沒接觸過lua,剛自己試了一下,就按照你問題中的"23^Hello^你好^2000^world.txt"這個字元串為例,以^為分隔符來說吧:
---------------start---------------
str = "23^Hello^你好^2000^world.txt"
list = table.pack()
for w in string.gmatch(str, "[^^]+") do
print(w)
table.insert(list, w)
end
---------------start---------------
解釋:代碼共6行,
第1行:定義一個變數str,內容為"23^Hello^你好^2000^world.txt",這也是我們要處理的字元串.
第二行: 定義一個空列表,它是用在下面的for循環中,存放以"^"作為分隔符的每一部分
第三行:簡單來看是個for循環,深入一點來看,也就是string.gmatch(str,"[^^]+")這部分需要解釋一下,它表示調用的是string庫的gmatch()函數,這個函數有兩個參數,第1個參數為要處理的字元串,咱們這里就是上面定義的str,第二個參數就是我們要在這個字元串中匹配什麼樣的內容,這里的匹配內容寫的是"[^^]+",學過正則的很好理解,單純的[abc]表示匹配任意單個字元a或b或c,有一點特殊的是一旦[]中的字元是以^打頭的,則表示匹配任意非[]中列出的字元,如[^abc]表示匹配任意除abc外的其它任一字元,所以[^^]解釋為匹配除^外的任一字元,舉例來說,如果我們有字元串"23^Hello",如果用[^^]匹配的話,最終得到的是7個單個字元,即"2","3","H","e","l","l","o",顯示這不符合我們的題意,所以在這基礎上改進了一下,即在其後又加了個+號,[^^]+,這里的+號表示盡可能多地匹配它前面內容,這里也就是盡可能多地匹配[^^],所以[^^]+在處理"23^Hello"的時候,結果得到的就是"23","Hello".這里關於用到的這個正則說的不是太清楚,多練練就明白了。最後,第3行把函數部分給替換掉後,可以理解為:for w in [23,Hello,你好,2000,world.txt],每次從[]中取一個值賦給w,然後執行for下面的語句,接著往下看
第4行,接第3行尾,就是把每次賦給w的值都列印出來
第5行,將每次賦給w的值都追加到列表list中
第6行,for循環語法上的閉合關鍵字,這個沒啥說的
到此,我們得到了一個列表值為[23,Hello,你好,2000,world.txt]的list,此時我們就可以使用list[n]來取我們想要的值了 。
*.如果你要問上面最3條最後不都有[23,Hello,你好,2000,world.txt]了嘛,為啥還要那麼麻煩,直接使用string.gmatch()函數不就行了嘛,其實第3條結尾我那麼寫只是為了讓你好理解,實際上gmatch()函數的返回值並不是列表,而是一個可迭代的函數,而for循環的作用就是把gmatch()函數返回的這個可迭代的函數中的每個元素都取出來並賦給列表list
*.說的有點啰嗦了,希望對你有幫助吧,另外,我從沒用過lua,也是剛查了查,自己實踐了一下,希望不會形成誤導
⑧ linux shell怎麼查找文件中指定字元串,並把該字元串和下一行的內容寫到另一個文件中
有兩種寫入方式:
1、grep
-i
"aaa"
-A
1
1.txt
|
grep
-v
-e
"--"
>2.txt
grep 指令用於查找內容包含指定的範本樣式的文件,如果發現某文件的內容符合所指定的範本樣式,預設grep指令會把含有範本樣式的那一列顯示出來。若不指定任何文件名稱,或是所給予的文件名為「-」,則grep指令會從標准輸入設備讀取數據。
2、awk
'/aaa/{getline
var;print
$1"\n"
var}'
1.txt
>2.txt
awk語言的最基本功能是在文件或者字元串中基於指定規則瀏覽和抽取信息,awk抽取信息後,才能進行其他文本操作。完整的awk腳本通常用來格式化文本文件中的信息。
linuxshell中引號的使用方法:
shell使用引號(單引號/雙引號)和反斜線("\")用於向shell解釋器屏蔽一些特殊字元,反引號(")對shell則有特殊意義。
如:abc="how
are
you"
(bash/pdksh)
set
abc
=
"how
are
you"
(tcsh)
這個命令行把三個單片語成的字元串how
are
you作為一個整體賦值給變數abc.
abc1='@LOGNAME,how
are
you!'
(bash/pdksh)
set
abc1='$LOGNAME,how
are
you!'
(tcsh)
abc2="$LOGNAME,how
are
you!"
(bash/pdksh)
set
abc2="$LOGNAME,how
are
you!"
(tcsh)。
⑨ Linux shell 中如何從路徑名提取指定字元串
以
-
為分隔符,用cut命令取第二個欄位就行了啊(只要路徑名里不含
-
即可)
echo
"/home/lxy/hhhhh-a.bbb.cc.d"
|
cut
-d'-'
-f2
更保險一點的做法是先取出文件名(防止路徑名里含
-
),然後再用上述方法處理:
echo
"/home/lxy/hhhhh-a.bbb.cc.d"
|
awk
-F/
'{print
$NF}'
|
cut
-d'-'
-f2
⑩ 怎麼用bat截取指定字元串中間的字元串
1 如果是取最左的特定字元(串)之後的部分可用
set "MyVarB=%MyVarA:*.=%"
意思是變數MyVarA第一個.及之前部分替換為空
則MyVarB取得last.stand
當然繼續以此方法總是可以取到最後部分
:get
if not "%MyVarB:.=%"=="%MyVarB%" set MyVarB=%MyVarB:*.=%&goto :get
2 對於取最後一個點後的部分,可以把它想像成一個帶後綴的文件名
for %%i in ("%MyVarA%") do set "Vq=%%~xi"
set "MyVarB=%Vq:.=%"
註: set 命令後的引號不是必要的%%~xi 表示取後綴名 for命令中的雙%%符如在命令行需改為單%
因後綴名是帶.的,再把點替換為空(或去掉第一字元set "MyVarB=%Vq:~1%")
3 for命令是循環命令語法比較復雜比如還可以:
for %%i in ("%MyVarA:.=","%") do set "MyVarB=%%~i"
將原串每個.換成"," 且首尾都加上引號,這樣形成 "the","last","stand"的字元串
會以逗號為分隔符,循環執行do後的賦值命令,雖然執行了3次但最後一次是最終的賦值情況
還可有其它方法,建議先把如set這樣的簡單命令熟悉了再去研究for這樣的復雜命令