當前位置:首頁 » 操作系統 » linux取列

linux取列

發布時間: 2023-02-24 16:12:49

linux 中可以用cut提取某一行的某一列數據嗎 如果可以怎麼做

可以。
cut -d" " -f2 filename
意思就是我以空格為列的分隔符,提取第二列

或者使用awk
awk '{print $2}' filename
awk默認以空格為分隔符,列印第二列

② linux系統符號說明

    01 系統特殊符號

    02 系統通配符號

    03 系統正則符號

    說明: 查詢信息的時候,會帶來便利

    1) 基礎符號系列

      $ 

      a 調取變數信息

      b 區分用戶類型  $ 普通用戶

      c 結合awk對文件進行取列  

    xargs -n 2 <test01.txt|awk '{print $2}'

  !

  a 強制的作用  wq!

  b 可以實現取反

awk '!/oldgirl/' test02.txt (排除oldgirl)

find /oldboy_dir/ ! -type f (排除文件)

  c !信息  可以快速調取執行歷史命令(慎用)

    cat ~/.bash_history  -- 記錄歷史命令信息, 但是不會實時記錄

history              -- 顯示所有輸入過的歷史命令

      |

  a 實現管道功能

    將前一個命令執行的結果交給管道後面的命令進行處理

一般管道符號 會經常和xargs命令配合使用

批量刪除操作

find /oldboy -type f -name "oldboy*.txt"|xargs rm

find /oldboy_dir/ -type f -delete

    find /oldboy_dir/ -type f -exec rm -f {} \;

    查找指定數據信息進行復制

    find /oldboy -type f -name "oldboy*.txt" |xargs -i cp {} /oldgirl/

    find /oldboy -type f -name "oldboy*.txt" |xargs cp -t /oldgirl/

    find /oldboy -type f -name "oldboy*.txt" -exec cp -a {} /oldgirl \;

查找指定數據信息進行移動

    find /oldboy -type f -name "oldboy*.txt" |xargs -i mv {} /oldgirl/

    find /oldboy -type f -name "oldboy*.txt" |xargs mv -t /oldgirl/

    find /oldboy -type f -name "oldboy*.txt" -exec mv {} /oldgirl \;

    xargs(火眼金睛)後面跟的命令,不識別別名信息

  #

    a 表示對配置文件信息進行注釋

    b 表示用戶的身份信息 超級管理員用戶

2) 引號符號系列

      "" 基本上和單引號功能類似 但是可以對一些特殊符號做出解析  $ `命令`==$(命令)

      '' 裡面編寫的什麼內容就輸出什麼內容  所見即所得

  作用:

  01. 指定需要輸出的信息

  02. 利用引號將空格分隔的信息匯總為一個整體

      ``($()) 將引號裡面命令執行結果,交給引號外面命令進行使用  

3) 重定向符號

  >/1>  標准輸出重定向符號

  >>/1>> 標准輸出追加重定向符號

  2> 錯誤輸出重定向符號

  2>> 錯誤輸出追加重定向符號

  <  標准輸入重定向符號

      tr xargs

  << 標准輸入追加重定向符號

4) 邏輯符號系列

  邏輯: 在完成一件事情的時候,有合理先後順序

  &&  前一個命令操作執行成功了,再操作執行後面的命令

  ||  前一個命令操作執行失敗了,再操作執行後面的命令

  mkdir /old_dir && echo "create dir sucess" || echo "create dir failed"

      create dir sucess

      mkdi /old_dir && echo "create dir sucess" || echo "create dir failed"

      -bash: mkdi: command not found

      create dir failed

    什麼通配符號: 用於匹配文件名稱信息, 便於快速查找文件信息 find

    *  匹配所有信息

      find /oldboy -type f -name "oldboy*"  ---以oldboy開頭的信息都查詢出來

  find /oldboy -type f -name "*oldboy"  ---以oldboy開頭的信息都查詢出來

  find /oldboy -type f -name "oldgirl*oldboy" 

                                          ---以oldgirl 開頭的信息

    以oldboy  結尾的信息都查詢出來

{} 產生序列信息

  連續序列:

    echo {01..05}

        echo {a..z}

        echo {A..Z}

  生成不連續序列

  a 有規律的不連續序列

echo {01..05..2}

        01 03 05

        echo {a..z..2}

      b 沒規律的不連續序列

echo {www,bbs,blog}

        www bbs blog

  生成組合序列

        echo {1,2}{a,b}

        1a 1b 2a 2b

        echo {1,2}{a,b}{A,B}

        1aA 1aB 1bA 1bB 2aA 2aB 2bA 2bB

    echo A{a,b}

        Aa Ab  

      A=oldboy.txt

      echo oldboy.txt{a,b}  

      oldboy.txta oldboy.txtb  

  echo A{,b}

      A Ab

  A=oldboy.txt

  b=.bak

  cp oldboy.txt{,.bak} == cp oldboy.txt oldboy.txt.bak

  快速備份文件命令

  cp oldboy.txt{,.bak}

  快速還原數據方法

  cp oldboy.txt{.bak,}

  echo A{B,}

      AB A

  oldboy.txt{.bak,} == cp oldboy.txt.bak oldboy.txt

    基礎正則符號:basic regular expression    (BRE)

擴展正則符號:extended regular expression (ERE)

基礎正則符號:

    a 尖角符號:^

      以什麼開頭的信息進行過濾出來

  grep -v "^#" nginx.conf.default >nginx.conf(對不需要關注的信息取反)

  常見錯誤

  find / -type f -name "^oldboy"  錯誤

  find / -type f -name "oldboy*"  正確

    b 美元符號:$

  以什麼結尾的信息進行過濾出來

  以m結尾信息, 並且顯示上1行 和 下2行的信息

      grep "m$" -A 2 -B 1 test.txt

      常見錯誤:

  如果過濾不出來,確認每行結尾是否有空格信息

  方法一:

  cat -A test.txt

  方法二

      vim 底行模式輸入命令 --- :set list

c 尖角美元符號:^$

      取出文件中空行信息

      grep "^$" test.txt

      grep -v "^$" test.txt

d 點符號: .

  表示匹配任意一個且只有一個字元

  grep "." test.txt  -o(更直觀的顯示過程)

e 星號符號: *

  匹配星號前面一個字元連續出現0次或多次

f 點和星號組合: .*

      匹配所有信息

  說明: 正則符號在匹配數據信息的時候具有貪婪特性

避免貪婪特性的方法,是在指定一行信息中唯一節點信息

g 轉譯符號: \

1) 將一些有意義的符號進行轉譯, 變為一個普通符號

grep "\.$" ~/oldboy_test.txt

2) 將一些沒有意義的符號進行轉譯,變為有意義符號

    \n  換行符號 linux

    3) 可以將擴展正則符號轉換成普通正則讓grep sed命令可以直接識別'

grep "o\?" test.txt

h 括弧符號:[]

  匹配括弧中每一個字元,並且匹配的關系是或者的關系

  需求: 找出文件中oldboy 和 oldbey兩個單詞信息

      grep "oldb[oe]y" test.txt

      企業應用: 找尋文件中字母 數字信息

      grep "[0-9a-zA-Z]" test.txt

i 尖號和中括弧組合使用 : [^]

  對中括弧裡面匹配的字元信息進行排除

  grep  "[^0-9a-zA-Z]" test.txt  --- 將字母數字都排除,只留下符號信息

  尖號和中括弧組合使用 : ^[]

  以中括弧裡面匹配的字元作為一行開頭的字元

      grep "^[zx]" test.txt

正則符號注意事項

按照每行信息進行過濾處理

注意正則表達符號禁止中文

附上顏色信息進行正則過濾 --color=auto/--color

基礎正則符號可以被三劍客命令直接識別 grep sed awk

擴展正則符號不可以被三劍客命令中老二和老三直接識別

sed命令想識別正則符號: sed -r

grep命令想識別正則符號: egrep / grep -E

    a 加號符號:+

    匹配加號前面一個字元連續出現1次或者多次

b 豎線符號:|

或者關系符號

egrep "oldboy|oldbey" test.txt

c 括弧符號:()

將多個字元信息進行匯總為一個整體

egrep "(oldboy)" test.txt

進行後向引用前向的一個操作(sed)

echo "123456"|sed -r "s#(..)(..)(..)#<\1><\2><\3>#g"

修改配置文件內容

sed -rn "s#(^S.*UX=).*#\1enforcing#gp" /etc/selinux/config

SELINUX=enforcing

d 括弧符號:{}

指定花擴號前一個字元連續匹配多少次

* 連續匹配 0 次 或 多次

+ 連續匹配 1 次 或 多次

    1) {n,m}  n表示最少連續匹配多少次  m表示最多連續匹配多少次

2) {n}  n表示只連續匹配n次

3) {n,}  n表示至少連續匹配n次,至多沒有限制

4) {,m}  m表示至多連續匹配n次,至少0次

e 問號符號:?

  表示匹配問號前面一個字元出現0次或者1次

③ Linux下用awk獲取某一行或某一列的查詢結果

背景:可能我們會遇到獲取Linux命令執行結果的某一列或某一行的信息。

awk -F  '\t'  '{print $1}'  name.txt

其中-F表示分割符,本例為\t,$1表示第1列 ,$0表示全部。

ls -lrt  | awk -F ' ' '{print $NF}'

好處:這種情況下不需要知道所獲取信息在哪一列,直接取最後一列即可。

其中-F表示分割符,本例為空格,$NF表示最後一列,$(NF-1)表示倒數第二列。

awk 'NR awk 'NR==1,NR==4 {print}'  file

行號等於1和4的列印出來

awk 'END {print}' name.txt

部分參考 https://www.cnblogs.com/wish123/p/5540210.html

④ linux腳本怎麼讀取文本的某一列進行操作

[root@dba ~]# cat ip.txt
192.168.1.1 b
192.168.1.1 c
[root@dba ~]# cat a.sh
#!/bin/bash
while read LINE;
do
echo -e "${LINE} `ping -c 1 ${LINE}| grep -1 "transmitted"| sed 'N;N;s/\n/ /g'| awk -F",| " '{print $10,$13,$18,$22}' | awk -F"/" '{print $1,$2,$3,$4}';`"
done<ip.txt
[root@dba ~]# ./a.sh
192.168.1.1 b 1 0% 0ms 0.864 0.864 0.864 0.000
192.168.1.1 c 1 0% 0ms 0.829 0.829 0.829 0.000

是這意思不?

取某列的話,取出來放到一個臨時文件里,然後想怎麼操作就怎麼操作,然後再把臨時文件刪了,方法可以有很多種,關鍵是根據各種環境靈活運用啊
[root@dba ~]# cat ip.txt
192.168.1.1 b
192.168.1.1 c
[root@dba ~]# awk -F " " '{print $2}' ip.txt > temp.txt
[root@dba ~]# cat temp.txt
b
c
[root@dba ~]# sed '2s/[a-z]/999/g' temp.txt
b
999
[root@dba ~]# rm -rf temp.txt

是這意思不?覺得可以給好評啊親!

⑤ linux命令對某一列去重/統計

cat file.csv | awk -F '\t' '{print $2}'

'\t'指的是file.csv不同列以'\t'分割,如果的是以其他符號分割,換成其她符號;

'{print $2}'是指取第2列,此處從1開始計數,第1列,第2列;

一般去重之前要進行排序

cat file.csv | awk -F '\t' '{print $2}' | sort | uniq

前半部分與命令1一樣,後面加上| sort | uniq

比如通過命令2發現,第2列取值有兩種,分別是'neg'和『pos』,那麼我想知道有多少行的第2列取值為'pos',多少行的第2列取值為'neg'。

cat file.csv | awk -F '\t' '{print $2}' | grep -o 'neg'| wc -l

前半部分與命令1一樣,後面加上 | grep -o 'neg'| wc -l

grep -o 'neg'就是取出取值為'neg'的行

wc -l 是計數有多少行

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:593
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:888
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:581
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:765
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:684
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1013
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:255
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:114
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:806
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:713