在以下檔案中,第 6 列中值不是 1 或 2 的行的第 6 列值應替換為 -9。我該怎么做?
老鄉
18_0033 26210 0 0 1 1
18_0036 24595 0 0 1 2
18_0040 25563 0 0 1
18_0041 35990 0 0 0 -8
18_0042 39398 0 0 0 -8
18_0045 21586 0 0 1 1
18_0050 22211 0 0 1 2
new.fam 應該是
18_0033 26210 0 0 1 1
18_0036 24595 0 0 1 2
18_0040 25563 0 0 1 -9
18_0041 35990 0 0 0 -9
18_0042 39398 0 0 0 -9
18_0045 21586 0 0 1 1
18_0050 22211 0 0 1 2
編輯:我用過 cat old.fam | awk '{ if ($6==1 || $6==2) {print $1 " " $2 " " $3 " " $4 " " $5 " " $6 ;} else {print $1 " " $2 " " $3 " " $4 " " $5 " " -9;}}'> new.fam
現在的問題是替換了第 6 列值 (-9) 的行,第 5 列和第 6 列之間沒有空格分隔 FS。
18_0033 26210 0 0 1 1
18_0036 24595 0 0 1 2
18_0040 25563 0 0 1-9
18_0041 35990 0 0 0-9
18_0042 39398 0 0 0-9
18_0045 21586 0 0 1 1
18_0050 22211 0 0 1 2
uj5u.com熱心網友回復:
在這里,您可以開始處理一些事情:
cat test.txt | awk '{if ($6==1||$6==2) {print $1 " " $6;} else {print $1 " -9";}}'
該awk腳本執行以下操作:
- 檢查第六列的值
- 在兩次檢查之間,有
awk||邏輯 OR 運算子
腳本的其余部分是顯而易見的。
編輯
顯然awk無法處理空格,后跟數字,因此您可以使用此awk腳本:
awk '{ if ( $6==1|| $6==2) {print $1 " " $2 " " $3 " " $4 " " $5 " " $6 ;} else
{print $1 " " $2 " " $3 " " $4 " " $5 " -9";}}'
(注意$5 " -9"在最后)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/347831.html
