1. 如何把sed的輸出,作為其他命令的輸入
可以使用"|"(管道)符號
sed -n '1p' | awk "{print $0}"
意思就是將一個文件的第一行列印的輸出結果作為awk的輸入
2. linux 定向輸出內容到文件指定行
重定向只有追加或者覆蓋。。。
3. 利用shell腳本如何提取一個文件中某一特定行和下面若干行的內容
1、在linux目錄/root下建立一個txt文件,內容如下,使用|豎線分割,作為我們的實驗數據樣本。
4. sed命令想在第3列和第4列之間差入2列
sed-i's/3,/&7,8,/'file.unl
&就表示引用前面正則匹配到的內容,這里就代表 "3,"
用awk的話無法直接修改文件,只能存為臨時文件,然後再通過mv命令覆蓋原文件。
5. linux命令怎麼顯示文件某一行或幾行內容
sed-n4,8pfile#列印file中的4-8行
sed-n4pfile#列印file中的第4行
6. sed或者cat命令怎樣列印指定行比如第2 4 5 行
sed-n'2p;4,5p'InputFile
n,m 表示 n 到m行,這里用 4p;5p 也行。
InputFile 是輸入文件
只用 cat 不能實現,倒是用 cut可以方便實現
cut-d$' '-f2,4-5hello.c
注意連續行用的是 4-5。
7. linux指令 sed指令怎麼選擇列
首先我這邊先建一個字母大小轉換的腳本test2.sh,內容如下:
先介紹些sed -n的應用:
sed命令中p能實現列印匹配行的功能。我們可以實際看下sed命令帶-n和不帶-n情況下有什麼不同。
sed -n "1p" test2.sh:帶-n選項的話,只列印test2.sh腳本第一行匹配行。
sed "1p" test2.sh:不帶-n的話,不僅列印第一行匹配行,還列印輸出test2.sh腳本的全部內容。
sed -n還可以列印文件的范圍,比如列印test2.sh腳本的前兩行,我們就可以執行以下命令:sed -n "1,2p" test2.sh,就可以直接列印前兩行。
sed命令可以列印匹配模式行,比如列印test2.sh腳本匹配tr的行,就可以執行以下命令:
sed -n /tr/p test2.sh。
remark:如果不帶-n的話,除了列印匹配行外,還會列印腳本的全部內容。
sed -e的應用。只有當sed命令傳遞多個編輯命令式,才會使用到-e。比如:我想列印/tr/匹配行,並且列印匹配行所在的行號,此時存在多個sed參數,就要用到-e了。
sed -n -e /tr/p -e /tr/= test2.sh
每個參數前都要帶上-e:
sed a\追加命令,命令格式為:sed 』指定地址a\追加內容『 目標文件
這個追加內容在匹配行的下一行,只會輸出到標准輸出,原文件內容是不變的,例如在test2.sh腳本的/tr/所在的匹配行的下一行添加「#hello」內容,可需要執行:
sed '/tr/a\#hello' test2.sh
一定不要忘記單引號.
還有一個sed i\的追加命令,命令格式為:sed 』指定地址i\追加內容『 目標文件,跟a\不同,i\追加是在指定位置的上一行追加命令
sed命令中還有一些特殊的匹配,比如元字元匹配,此時需要用轉義符"\"屏蔽其特殊意義。
比如:sed -n 『/\=/p』test2.sh,則列印輸出tr一行。
$在正則表達式中表示尾行,執行sed -n 『$p』 test2.sh則列印腳本尾行。
!表示取反,可以看以下兩個例子
sed中可以使用關鍵字來匹配行,列印我們所需要的內容,比如,我希望列印test2.sh第2,3行,可以執行:sed -n "2,3P" test2.sh,也可以執行sed -n "/tr/,/exit/p" test2.sh
sed c\的應用,命令格式為:sed 』指定地址c\替換內容『 目標文件。比如,#hello,替換test2.sh腳本的tr這行,可以執行命令:sed '/tr/c\#hello' test2.sh
sed刪除d應用:比如我想刪除test2.sh的第2行,可以執行以下命令:sed "2d" test2.sh或者sed /tr/d test2.sh
sed替換s應用:格式 sed s/被替換的字元/替換字元/[替換選項]
比如,我想把test2.sh中tr替換成大寫的tr,則可以執行以下命令:sed 『s/tr/TR/』test2.sh,則把腳本中的tr替換成TR,完後輸出全部內容。
如果僅想列印替換所在行,則需要試用使用-n和-p:sed -n 『s/tr/TR/p』 test2.sh:把腳本中的tr替換成TR,然後列印tr所在的行.
如果腳本中存在好幾個tr,並且每一行也存在多個tr,如果執行以上命令的話,只會更改每一行的第一個出現的tr,如果要全部把tr轉後為TR,則需要添加G參數:
sed -n 』S/tr/TR/pg』test2.sh。
w參數是定向輸入參數,比如要把上述的變更定向輸出到test1.txt中,則需要執行:
sed -n 』s/tr/TR/pgw test1.txt』 test2.sh。
也可以直接把選定的匹配內容寫到另一個文本中,比如想把test2.sh中tr這一樣寫到test2.txt中,執行:sed -n 』/tr/w test2.txt『 test2.sh
8. 如何用shell提取文件中指定的字元串
shell讀取文件的指定行字元串
在得到數行輸出時,需要得到指定行的欄位,可以使用該指令。
sed -n Np 文件名
如sed -n 2p xxx 輸出結果即為第二行的內容
在shell腳本中有時需要按行讀出文件的內容,比如文件中每一行的命令等。
假設存在文件filename,需要從中按行讀取內容,並在每行的開頭增加字元串command,命令如下
cat filename | while read line; do echo "command $line"; done!
9. 如何實現sed命令結果只輸出指定次數的匹配
鄙人愚鈍,只有這種辦法啦:
sed-nr'/*{5}/{h;:a;n;H;/*{5}/!ba;g;p;q}'file.txt
說實話,沒太明白你給出的sed命令中,// 這個地址匹配是怎麼工作的。
10. shell中,sed可以寫入前面的數據流嗎例如,cat一個文件,可不可以用sed把cat的內容寫入到指定文件
用sed的a命令(append,附加到文件的指定行後)或 i命令(insert,插入到指定行前)
str=`cat file1 | sed -n '3p'`
line=3 # file2的指定行
sed -i "${line} a$str" file2