大神們,誰能告訴我shell腳本里,指定替換檔案內某行某列內容的命令是啥?awk怎么用?謝謝!
uj5u.com熱心網友回復:
sed命令sed -i 's/原內容/新內容/' 檔案名
-i是修改原檔案(不用-i就只會替換列印到螢屏,不會修改原檔案),
你還可以在s前面加上多少行,或者用//模式匹配 ,比如:sed -i '5s/yes/no/' test.txt 將test.txt中第5行的yes替換成no
sed -i '/aaa/s/yes/no/' test.txt 將test.txt中包含aaa的行中的yes替換成no
sed詳細用法可以百度下
uj5u.com熱心網友回復:
謝謝您的回復!我遇到的問題是,因為我要做一個回圈,所以那個檔案內固定行列的位置的值它是變化,而不變的是那個位置,所以我不知道怎么寫,替換的位置指定的值,不單純是某個固定不變的值!
uj5u.com熱心網友回復:
檔案內被替換字串是變化的,不變的是它所在的位置,哪個命令可以實作不管替換的具體內容,給一個具體行列的位置,就可以替換!
uj5u.com熱心網友回復:
sed -i '2c123456' 替換第二行內容為123456如果要替換指定列的話,你可以想象成替換多個行,然后逐一替換
字串是隨機的話,可以在外面先定義然后當做變數的方式傳入sed命令中
uj5u.com熱心網友回復:
嗯嗯!謝謝您的回復!我在外部已經好了變數,但不知替換指定行列值的命令該怎么去寫?
uj5u.com熱心網友回復:
用個腳本,先把值取出來,在替換
比如要替換test.txt檔案的第5行,第7列的內容為BBB
A=`awk 'NR==5{print $7}' test.txt`
sed -i "5s/$A/BBB/" test.txt
不過這個 不適用 于第5行中有 多個列都是A
uj5u.com熱心網友回復:
謝謝謝謝!我一會試一下
uj5u.com熱心網友回復:
如果你要替換的那行,那列,可能有重復的,可以用下面方法A=`awk 'NR==5{sub($7,"BBB");print $0}' test.txt`
sed -i "5a\\$A" test.txt
sed -i '5d' test.txt
sub是替換,類似sed的s,就是把$7(第7列)替換成BBB,然后把替換后的第5行列印出來
sed "5a\*****" 就是在第5行下面新增一行, \后面的*****是添加的內容。雙引號,和\\兩個反斜杠都是為了識別出$A變數
5d就是洗掉原來的第5行
大概就是替換之后的第5行 賦值給A
然后在第5行下面新增一行 A
然后洗掉第5行,新增的A,就成了新的第5行
uj5u.com熱心網友回復:
大神們,誰能告訴我shell腳本里,指定替換檔案內某行某列內容的命令是啥?awk怎么用?謝謝!
檔案內被替換字串是變化的,不變的是它所在的位置,哪個命令可以實作不管替換的具體內容,給一個具體行列的位置,就可以替換!
用個腳本,先把值取出來,在替換
比如要替換test.txt檔案的第5行,第7列的內容為BBB
A=`awk 'NR==5{print $7}' test.txt`
sed -i "5s/$A/BBB/" test.txt
不過這個 不適用 于第5行中有 多個列都是A
謝謝謝謝!我一會回去試一下
uj5u.com熱心網友回復:
如果你要替換的那行,那列,可能有重復的,可以用下面方法
A=`awk 'NR==5{sub($7,"BBB");print $0}' test.txt`
sed -i "5a\\$A" test.txt
sed -i '5d' test.txt
sub是替換,類似sed的s,就是把$7(第7列)替換成BBB,然后把替換后的第5行列印出來
sed "5a\*****" 就是在第5行下面新增一行, \后面的*****是添加的內容。雙引號,和\\兩個反斜杠都是為了識別出$A變數
5d就是洗掉原來的第5行
大概就是替換之后的第5行 賦值給A
然后在第5行下面新增一行 A
然后洗掉第5行,新增的A,就成了新的第5行
嗯嗯!十分感謝您的熱情幫助!我一會回去試一下!謝謝!
uj5u.com熱心網友回復:
如果你要替換的那行,那列,可能有重復的,可以用下面方法
A=`awk 'NR==5{sub($7,"BBB");print $0}' test.txt`
sed -i "5a\\$A" test.txt
sed -i '5d' test.txt
sub是替換,類似sed的s,就是把$7(第7列)替換成BBB,然后把替換后的第5行列印出來
sed "5a\*****" 就是在第5行下面新增一行, \后面的*****是添加的內容。雙引號,和\\兩個反斜杠都是為了識別出$A變數
5d就是洗掉原來的第5行
大概就是替換之后的第5行 賦值給A
然后在第5行下面新增一行 A
然后洗掉第5行,新增的A,就成了新的第5行
非常高興,您的方法解決了我的問題!謝謝謝謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/69456.html
標籤:應用程序開發區
