假設我有一個像
1 3 44 5
2 23 1 44
我想在前兩列后添加兩列 0,以獲得
1 3 0 0 44 5
2 23 0 0 1 44
我可以使用類似的東西
cat file|(
for ((i=0;i<nlines;i ))
do
read l
echo $(echo $l|cut -d" " -f -2) 0 0 $(echo $l|cut -d " " -f 3-)
done
) >output
哪里nlines是已知的行數。但這恰好是非常緩慢的。
快速完成作業的方法是什么?Bash、awk 或其他 linux 命令列工具都可以。
uj5u.com熱心網友回復:
使用awk你可以:
awk '{$3 = "0 0 " $3} 1' file
1 3 0 0 44 5
2 23 0 0 1 44
或者這sed也可以:
sed -i.bak -E 's/^(([^ ] ){2})/\10 0 /' file
cat file
1 3 0 0 44 5
2 23 0 0 1 44
uj5u.com熱心網友回復:
Perl 適用于快速文本操作。在這里,你可以做
perl -i.bak -lane 'splice @F, 2, 0, (0, 0); print join " ", @F' file
uj5u.com熱心網友回復:
你也可以使用sed:
sed -E 's/^([^[:space:]]*[[:space:]]*[^[:space:]]*)(.*)$/\1 0 0\2/' file
或ruby:
ruby -lane 'puts ($F[0..1] ["0"]*2 $F[2..]).join(" ")' file
uj5u.com熱心網友回復:
使用您顯示的示例,請嘗試以下awk代碼。
awk '{$2=$2 " 0 0 "} 1' Input_file
說明:只需將空格和 2 個零(由空格分隔)后跟空格添加到第二個欄位本身并列印當前行。
uj5u.com熱心網友回復:
這可能對你有用(GNU sed):
sed -i 's/\S\ /& 0 0/2' file
自行替換第 2 列并附加 0 0.
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/372417.html
