按條件提取檔案內容

2021-09-29 14:40:21 字數 1503 閱讀 9656

乙個文字文件裡面的內容有數字,英文,以及被 包起來的英文

從這個文件裡面只篩選英文, 不包含被 包起來的英文

對於一行的字元小於一定長度的行,在輸出時不換行,也就是如果一行的文字小於某乙個長度時,與下一行合併成一行輸出

while

read line;

do#statements

# 在寫正規表示式的時候不用用引號括起來

# [^\]: 不包含 行

# 如果這一行包含 就跳過if[

[$line

=~ [^\]

]];then

continue

fi# ^[a-za-z]: 篩選開頭為字母的行

# [a-za-z]:篩選包含字母的行if[

[$line

=~ [a-za-z]]]

;then

# 把每一行追加到檔案中

# $ line 的長度

# 判斷大小時要用這種方式,不能直接用 > < 號if[

[$ -lt 23 ]];

then

# echo -e "$ \c" 不換行輸出

echo -e "$ \c"

>> output.txt

else

echo

$line

>> output.txt;

fifi

done

< /personal/shell/a.txt # 要讀取的檔案

正規表示式的應用

在 shell 中進行關係運算時要使用關係運算子,比如**中的小於的判斷,要用 -lt 而不是 <

echo -e 「$ \c」 不換行輸出,這裡記得要在$ 的後面加乙個空格,否則與下一行的單詞就沒有間隔了

echo $line >> output.txt 這裡使用的是追加的方式輸出到檔案中,所以在每次要重新測試時,要記得把之前生成的檔案刪除,不然如果資料比較多的話可能會以為沒有效果

另乙個就是換行符的問題了,這個問題困擾了很久,很難發現。就是在 unix 系統和 windows 系統中採用不同的換行符,具體區分可以參考這篇文章,mac 系統中以前是cr,現在也是lf

這裡出現的問題就是,當檔案使用的是crlf換行的話,指令碼中的換行輸出就沒有效果了,當檔案使用是lf的話就可以按照我們設定的條件進行不換行輸出。

那麼接下來的問題就是如何把crlf換成lf了,在網上查了很多資料,大部分講的是在跨平台開發時,如何用 git 來轉換,當前的操作用不用 git,也沒必要那麼麻煩。

最後的解決辦法就是利用 idea,在 idea 的下面有乙個選項,可以選擇lf或是crlf,選擇lf之後把內容複製到 idea 中直接就會轉成lf

按條件提取系統配置

1 將當前主機的所有ip位址資訊存入檔案ipadd.txt 2 去掉ipadd.txt檔案裡的空行,顯示出來 3 複製 etc inittab檔案到當前目錄下,改名為init.txt 4 統計init.txt檔案中的有效配置 排除 開頭的行 空行 行數 篩選文字檔案內容利用的命令為grep,此命令是...

按條件提取系統配置

1 將當前主機的所有ip位址資訊存入檔案ipadd.txt 2 去掉ipadd.txt檔案裡的空行,顯示出來 3 複製 etc inittab檔案到當前目錄下,改名為init.txt 4 統計init.txt檔案中的有效配置 排除 開頭的行 空行 行數 篩選文字檔案內容利用的命令為grep,此命令是...

Linux中按條件提取系統配置

按條件提取系統配置 問題 將當前主機的所有ip位址資訊存入檔案ipadd.txt 去掉ipadd.txt檔案裡的空行,顯示出來 複製 etc inittab檔案到當前目錄下,改名為init.txt 統計init.txt檔案中的有效配置 排除 開頭的行 空行 行數 方案 篩選文字檔案內容利用的命令為g...