常用文本操作命令

来源:http://www.cnblogs.com/huzongzhe/archive/2017/05/23/6895932.html
-Advertisement-
Play Games

1. tr 按列替換 刪除輸入中的 "{" 和 "}" 將文件testfile中的小寫字母全部轉換成大寫字母 2. cut : cut [ b] [file] 列切分 cut 命令從文件的每一行剪切位元組、字元和欄位並將這些位元組、字元和欄位寫至標準輸出。 如果不指定 File 參數,cut 命令將讀取 ...


1. tr 按列替換

  • echo "{123}" | tr -d '{}' 刪除輸入中的 "{" 和 "}"

  • cat testfile |tr a-z A-Z 將文件testfile中的小寫字母全部轉換成大寫字母

2. cut : cut [-b] [file] 列切分

cut 命令從文件的每一行剪切位元組、字元和欄位並將這些位元組、字元和欄位寫至標準輸出。

如果不指定 File 參數,cut 命令將讀取標準輸入。必須指定 -b、-c 或 -f 標誌之一。

  • echo "123,456" | cut -d "," -f 1 以","分隔截取輸入中的每行的第一部分內容輸出.

  • who | cut -b 3 以位元組為分隔, 輸出每行的第三個位元組. -c 是以字元為分隔

  • count=$(echo -e "${line}" | cut -f 2) 其中,line中字元是以tab作為分隔符!

3. chown, chgrp, chmod 許可權

sudo chgrp root * 修改當前目錄下所有文件為root組

sudo chown root * 修改當前目錄下所有文件的owner為root

sudo chmod 777 -R dir 遞歸修改dir的許可權為777

sudo chmod 755 file.sh 修改file.sh為任何人可執行許可權

4. sudo

  • sudo -l 查看當前用戶運行命令許可權

  • sudo -u <user> command 使用user用戶執行命令command

5. uniq 去重

uniq -c file 在每行的旁邊增加重覆的數量。

6. nl 輸出前加行號

  • nl file在輸出的內容前加行號

  • nl -b a file 遇到空行,也加行號。

  • nl -n rz -w 3 file 行號3位對其,前面補0.

7. shuf 打亂文件順序

  • shuf sort_file -o rsort_file

8. split 將文件切分

  • split -5000 filesplit -l 5000 file 將file按行切分成多個文件, 文件最大行為5000

  • split -5000 -d file 以數字作為尾碼,預設:xaa,xab,xac, 現在x00,x01,x02

  • split file.txt -b 10M 將文件file.txt平均切分成10M

合併文件

  • cat x* > file.txt 將以x開頭的所有文件合併到file.txt`中

  • cat file1 file2 > file3 將file1和file2合併保存到file3中.

文件內容順序, 按照file1+file2的順序保存到file3

模式切分csplit

將文本文件file以第 2 行為分界點切割成兩份,命令: csplit testfile 2

文件求交,差,補

cat a b | sort | uniq > c # c 是 a 並 b

cat a b | sort | uniq -d > c # c 是 a 交 b

cat a b b | sort | uniq -u > c # c 是 a - b

9. sed按行操作文本(大文本操作)

大文本數據修改,編輯,保存,不能用編輯器打開,可以藉助sed對大文件進行修改

sed編輯行以1為起始index!

詳解

  • -e 多次編輯

nl file | sed -e '3,$d' -e 's/bash/blueshell/' 刪除第三行到最後一行,然後將1-2行中匹配bash的字元串替換成blueshell字元串

sed -e 4a\newLineContent file 在第四行後天添加一行內容newLineContent

  • -n 僅顯示script處理後的結果。

nl /etc/passwd | sed -n '5,7p' 僅列出文件的5-7行。

nl /etc/passwd | sed -n '/root/p' 僅列出匹配root的行

  • -i 直接編輯源文件危險動作

sed -i 's/\.$/\!/g' file 將file的最後一行中的.替換成!

sed -i '$a # This is a test' file 在最後一行,再添加一行內容:# This is a test' file

nl /etc/passwd | sed -n '/bash/{s/bash/blueshell/;p;q}' 首先匹配所有bash行,然後執行{}裡面的一組動作,替換bash為blueshell,p列印,q退出!

-e 接的動作:

  • a :新增, 在當前行的下一行添加,是新的一行

  • i :插入, 在當前行的上一行插入,是新的一行

  • c :取代

  • d :刪除, 後面沒有內容;

nl file | sed '2,5d' 刪除第二到五行!

sed '2d' file 刪除第二行

nl file | sed -n '/root/p' 刪除所有行中包含root的行!

  • p :列印列。通常 p 與參數 sed -n 一起用

  • s :替換,/要被取代的字串/新的字串/g

使用

  1. 查找行號 grep -n --color '您的司機賬戶已被凍結' outbox.csv

  2. 刪除對應行號保存: sed -e 5d file1 > ./file2 刪除第五行 並保存到當前目錄下的file2文件中。

  3. 刪除匹配項: cat file1 | sed '/hello/d' > ./file2 刪除所有行中包含hello字元串的行保存。

nl file1 | sed '/hello/d' > ./file2 在每行內容前加一個行號,保存到文件中!

10. 只輸出一行中匹配的字元串.

語法: grep -o 'regex'

  • less file* | grep type | grep -o 'user\[.*\]user_id' | grep -o '\[.*\]' | sort | uniqfile開頭的所有文件中,每行包含type的字元串,提取字元串中以user[.*]user_id形式存在[]中的內容!

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 正常途徑訪問Mongodb的官方網站,它只提供了msi 安裝包的下載,這種方式帶來的好處是直接作為windows的服務進行管理。 但是在有些情況下,我們希望不作為windows的服務進行安裝,比如受到公司IT 安全策略的限制,管理員許可權不會提供給我們,那麼在這種情況下,我們希望能夠通過免安裝的方式使 ...
  • 存儲引擎:也叫表類型,相當於 table 的存儲機制、索引方案等配套相關功能。 不同的存儲引擎,由於處理方式不同,帶來的功能or優化不一樣。 要根據實際需求,選擇合理的引擎。 · 存儲類型: Myisam , InnoDB , BDB , Memory , Archive 。 · 預設的 table ...
  • 運維redis很久了,一直是口頭給rd說各種要求,嘗試把這些規範總結成文檔 摘選一些可能比較通用的規則如下: ...
  • 1. 是否允許為空(Null/not Null) 規定一個欄位的值是否可以是null。預設是可以為空。 此時,插入值a = 10 , b 為空,發現可以正確插入: 若試圖插入值b = 11,而a 不做處理,發現不能正確插入,提示 a 沒有預設值。 即當對某個欄位未輸入信息時,列屬性趨向於先查找有無默 ...
  • " 1、批量數據操作 " "1.1、批量生成數據" "1.2、批量插入數據" " 2、批量生成腳本 " " 3、生成數據字典 " " 4、常見系統包 " "4.1、DBMS_OUTPUT" "4.2、DBMS_RANDOM" "4.3、其它系統包及常用方法" " 5、總結 " 1、批量數據操作 1. ...
  • 記錄下mysql-connector-java與mysql版本的對應關係,已方便以後參考,這是最新版本對應, 時間:2017年5月23日 官網文檔地址: https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-versions.html (C ...
  • 1、索引相關查詢 2、觸發器相關查詢 查看當前庫中所有的觸發器: 1 SELECT * FROM Sysobjects WHERE xtype = 'TR' 查看當前庫中所有的觸發器和與之相對應的表: ...
  • mysql多實例監控實錄 系統環境: cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) 內核版本: uname -r 3.10.0-514.el7.x86_64 docker版本: docker -v Docker versio ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...