生成4个新行的过程
100 000 000
000 100 000 000
<000> 000 000 100 000000 000 000 100
在ea线上,一组三个零被100替换
我该怎么做?
汤姆
答案 0 :(得分:1)
$ echo '000 000 000 000' | awk '{for (i=1;i<=NF;i++) {f=$i; $i="100"; print; $i=f}}'
100 000 000 000
000 100 000 000
000 000 100 000
000 000 000 100
修改强>
使用for
循环迭代字段。字段编号 $i
的每个字段(i
)都会保存到临时变量f
。然后替换该字段的内容。记录($0
)已打印。该字段使用临时值返回其先前的值。
如果使用此数据,可能会更容易理解:001 002 003 004
。然后输出看起来像:
100 002 003 004
001 100 003 004
001 002 100 004
001 002 003 100
这是使用sed
的shell脚本版本:
data='001 002 003 004' # or 000 000 000 000
for i in {1..4}; do echo "$data" | sed "s/\<[0-9]\{3\}\>/100/$i"; done
或
count=$(echo "data" | $wc -w)
for ((i=1;i<=count;i++)); do echo "$data" | sed "s/\<[0-9]\{3\}\>/100/$i"; done
或没有任何外部工具的Bash:
data=(001 002 003 004) # use an array
count=${#data[@]}
for ((i=0;i<count;i++)); do f=${data[i]}; data[i]=100; echo "${data[@]}"; data[i]=$f; done
或许多其他可能性。