第5章 文字處理和字串操作

2021-07-27 02:35:13 字數 2635 閱讀 1374

1.1.       取出最近訪問的5個普通檔案,並要求輸出檔名和最後的訪問時間

執行命令:

$ls –lut|grep 「^-」|head -5|cut –c41-

解析:-t表示ls命令在輸出時會按修改時間來排序;-u表示ls –l命令顯示出檔案的最後訪問時間;」^-」是正規表示式,表示以橫桿字元』-』起始的行;通過cut命令把無關資訊刪除,選項-c指定了cut命令會保留並輸出那些字元。

範圍描述

n第n個字元

n-從第n個字元一直到當前行結束

n-m從第n個字元一直到第m個字元

-m從第乙個字元一直到第m個字元

1.2.       假如有兩個檔案name.txt和tel.txt,它們分別記錄了員工的姓名和**號碼,如果希望把兩個檔案中的使用者名稱和**號碼一一對應起來,該如何操作?

案例:name.txt內容如下:

matti

aarnio

dragos

acostachioaie

mark

adler

monalisa

agrawal

tel.txt內容如下:

555-0542

555-1234

555-1256

555-2345

555-3456

555-4567

555-5678

555-6789 

命令執行:

$paste –d』:』 name.txt tel.txt|cat -n

1.3.       檢查當前系統中的各種shell程式,統計出它們各被多少個使用者使用,並把統計結果按照從多到少的順序列印出來。

執行命令:

$cat /etc/passwd | cut –d: -f7|sort|uniq –c|sort –nr

解析:選項-f7表示每行的第7個字段;uniq –c是合併統計;sort –nr 選項-n表示按照數字的大小排序,選項-r表示從大到小顯示結果。

1.4.       統計文字檔案中各個單詞出現的個數

案例:#!/bin/bash

#定義函式count,用來統計乙個檔案中的字數

count()!?<>"\n\t''' < $1 |\

#把所有大寫字母轉換為小寫字母

tr 'a-z' 'a-z'|\

#把連續重複的空格符替換為乙個空格符

tr -s ''|\

#把空格符轉換為換行符

tr '' '\n'|\

#把相同的單詞放到一起

sort|\

#刪除重複單詞,並進行統計

uniq -c|\

#根據重複的次數進行排序

sort -rn

}echo

echo "this script can count words of a specified file."

#使用空命令冒號構建迴圈

while :

doread -p "enter the file path(or quit):"

case "$reply" in

[qq]|[qq][uu][ii][tt])

echo " bye."

#在輸入大、小寫quit時,退出

echo "$reply"

exit 0

;;*)

#判斷輸入的是乙個可讀的普通檔案,並且內容不為空

if [ -f "$reply" ] && [ -r "$reply" ] && [ -s "$reply" ]

then

#當使用者輸入乙個合法檔案時

#呼叫count函式統計檔案的單詞個數

count "$reply"

else

#如果輸入了非法檔案,顯示不能處理它

echo "$reply can not be dealed with."

fi ;;esac

done

exit 0

語法:tr [option] .. set1 [set2]     --set1會被set2替換

1.5.       所有特殊字元替換

省略1.6.       把tab轉換成空格符,且保證其他字元的位置不變

#cat命令的選項-t將把tab字元顯示為^i

$cat –t tabs.txt

#使用expand命令把tab字元替換為空格

$expand tabs.txt | cat -t

1          

2          

2.1         windows系統的檔案與linux系統的檔案之間進行轉換

在ubuntu linux系統中,可以安裝tofrodos包,使用其中的fromdos命令和todos命令來轉換文字檔案。

2.2         求乙個字串的長度

expr length string

2.3         把某些命令的輸出格式化成乙個**

$(printf 「permissions links owner group size date hh:mmfile-name\n」;ls –l|sed 1d)|column –t

解析:命令ls –l|sed 1d輸出當前目錄下的檔案列表,其中ls命令的輸出經過管道傳遞給sed 1d命令進行處理,目的是刪除目錄列表中的第一行。

文字處理 字串

字串常用操作 漢字到拼音的轉換 x 125 so o x so 175 sh x x sh 7d se e x se 1.250000e 02 d,c 65,65 65,a print format 1 3 保留3位小數 0.333 format 3.5 格式化為百分數 350.000000 for...

字串和文字處理技巧

複雜文字分隔 你需要將乙個字串分割為多個字段,但是分隔符 還有周圍的空格 並不是固定的。解決辦法 1 line asdf fjdk afed,fjek,asdf,foo 2 import re 3 re.split r s s line 4 asdf fjdk afed fjek asdf foo ...

python之文字處理 字串(九)

在python中我們遇到的最多的就是字串了,那麼對於它的ixie 操作我們肯定是要非常熟悉的了,那我們就先來了解一下我們的轉義字元以及字串的格式化吧 轉義字元 在字串中某些特定的符號前加乙個斜線之後,該字元被解釋成另外一種含義,不再表示原來的字元 一些常見的轉義字元 轉義字元 含義 b 退格,將游標...