linux截取第二行命令 linux取第二行數據

情景l(fā)inux--如何得出一個文件的第二列?

曾經有一同事問我,在linux下如何輸出一個文本文件的第二列,文本內容不限。我不假思索地說用 awk 啊。她追問只有這一種方式么?于是我仔細想了想,……

成都創(chuàng)新互聯公司專注于中大型企業(yè)的成都做網站、網站建設和網站改版、網站營銷服務,追求商業(yè)策劃與數據分析、創(chuàng)意藝術與技術開發(fā)的融合,累計客戶千余家,服務滿意度達97%。幫助廣大客戶順利對接上互聯網浪潮,準確優(yōu)選出符合自己需要的互聯網運用,我們將一直專注成都品牌網站建設和互聯網程序開發(fā),在前進的路上,與客戶一起成長!

既然內容不限,則可以自定義文件內容的格式,這樣可以用的命令自然會多一些。

需求為輸出文件第二列,則基本上有兩種方式實現:

因而,任何能直接輸出特定列的命令,以及能夠截取或刪除其它列的命令都滿足此需求。

為了方便說明,列舉幾個示例文件:

awk自然是最容易想到的,它處理格式化的文本得心應手。

使用 -F 指定列(字段)分隔符。

如果文件只有兩列,還可以使用 $NF ,如 awk '{print $NF}' test1.txt 。

awk還支持一些函數,同樣可以將第二列提取出來,此處不再贅述。

cut命令的默認字段分隔符是 TAB ,可以使用 -d 重新指定。 -f 列出指定字段。

如果第二列的字符的起始和結束序號為固定值,如test2.txt,可以使用 -c 參數,截取特定的字符序列。

sed采用的是第二種實現方式,即將其它列刪除掉,利用 后向引用 :

在test1.txt中,第二列的前面和后面分別為數字空格和空格數字,所以可以利用 正則表達式 將其輸出出來。

同理:

colrm命令可以刪除標準輸入中的指定列,但 該命令中所定義的列指的是單個字符 ,這與常規(guī)對字段的定義不同,需注意。

格式如下:

如果只指定start,則大于等于start的列均被刪除;如果指定了start和stop,則大于等于start,小于等于stop的列被刪除。

因此,此命令可處理第二個字段起始位置為固定值的test2.txt文件。

read讀取文件中的每行,將特定的列輸出來。

shell支持命令替換,通過兩次命令替換,得到第二列:

雖然不清楚她從哪里看到的這道題目,題目本身是何用意。但以一個問題,調動起了對linux多個命令及知識點的學習和總結,還是有價值的。

歡迎提出不同解法!

相關命令

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

可以。

cut -d" " -f2 filename

意思就是我以空格為列的分隔符,提取第二列

或者使用awk

awk '{print $2}' filename

awk默認以空格為分隔符,打印第二列

linux文件截取前幾行,后幾行,中間幾行命令及查看端口命令

1. 如果你只想看文件的前100行,可以使用head命令,如

head -100 ?filename

2. 如果你想查看文件的后100行,可以使用tail命令,如:

tail?-100 ?filename?或 tail -n?100 ?filename

3. 查看文件中間一段,你可以使用sed命令,如:

sed -n '100,200p'?filename?

這樣你就可以只查看文件的第100行到第200行。

截取的文件可以用重定向輸入到新的文件中:

head -100 ?filename a.txt

也可以在robot里面使用read 打印出來

使用命令:

ps -aux | grep tomcat/8080

方法二:直接使用 netstat ? -anp ? | ? grep??portno

即:netstat –anp | grep 8080

查看端口命令

linux替換目錄下所有文件中的某字符串

比如,要將目錄/modules下面所有文件中的zhangsan都修改成lisi,這樣做:

sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules`

解釋一下:

-i 表示inplace edit,就地修改文件

-r 表示搜索子目錄

-l 表示輸出匹配的文件名

linux查找目錄下的所有文件中是否含有某個字符串

查找目錄下的所有文件中是否含有某個字符串

find .|xargs grep -ri "php"

查找目錄下的所有文件中是否含有某個字符串,并且只打印出文件名

find .|xargs grep -ri "php" -l

ip addr? 查看ip地址

linux sed awk命令結合匹配符 根據第二行內容,替換第一行內容 可以寫成shell腳本

我也給個思路吧 —— 用sed根據地址范圍截取文件內容,用Here documents方法添加新的多行內容,然后重組文件。具體步驟如下:

1)截取test.xml文件起始行到abcdef行,保存到tmp文件;

2)將要添加的內容根據變量值展開,附加寫入tmp文件;

3)截取test.xml文件/abcdef行到結束行,附加寫入tmp文件。

4)移動tmp文件覆蓋test.xml文件。

代碼:

12345678910111213#!/bin/sh$hostnames="host1,host2,host3 ..."$paragraph="many_strings"sed -n '1,/^abcdef/p' test.xml tmpcat EOF tmpfor hname in `echo "$hostnames" | tr ',' ' '`do insert $hname insert $paragraphdoneEOFsed -n '/^\/abcdef/,$p' test.xml tmpmv tmp test.xml

注意:

1) for a in b 結構中,b集合里的內容必需要空格分隔。所以我這里做了轉換,用tr命令將逗號分隔改為了空格分隔。

2)第二個EOF必需頂格寫,前面不能有空格。

linux取出某幾行

一、從第3000行開始,顯示1000行。即顯示3000~3999行

cat filename | tail -n +3000 | head -n 1000

二、顯示1000行到3000行

cat filename| head -n 3000 | tail -n +1000

注意兩種方法的順序

分解:

tail -n 1000:顯示最后1000行

tail -n +1000:從1000行開始顯示,顯示1000行以后的

head -n 1000:顯示前面1000行

三、用sed命令

sed -n '5,10p' filename 這樣就可以只查看文件的第5行到第10行。

如何用linux腳本獲取到第二行輸出

命令:相關顯示命令有sed,tail,cat.awk,head等,可以??碙inux命令大全,man命令或者help命令查看相關用法。我們只介紹其中的一部分。

一、sed命令

#sed --help;查看具體使用規(guī)則:

#sed -n 'xp' filename;顯示文件X行命令:

#sed -n 'x,yp' filename;顯示文件X行到Y行的內容:

當前文章:linux截取第二行命令 linux取第二行數據
網頁路徑:http://muchs.cn/article26/hgsgcg.html

成都網站建設公司_創(chuàng)新互聯,為您提供手機網站建設、網站設計公司、虛擬主機、外貿網站建設移動網站建設

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

網站托管運營