乙個文字文件裡面的內容有數字,英文,以及被 包起來的英文
從這個文件裡面只篩選英文, 不包含被 包起來的英文
對於一行的字元小於一定長度的行,在輸出時不換行,也就是如果一行的文字小於某乙個長度時,與下一行合併成一行輸出
正規表示式的應用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...