當我執行以下行時,它將以換行符打印單詞。如何更改AWK中的現有打印行
awk 'BEGIN { print "line one\nline two\nline three" }'
如何在同一行中刷新信息並刷新現有行?
例如,在執行循環時,它應該打印'one',然後擦除行並打印'two',然後擦除行並打印'three'等。請您協助我嗎?
當我執行以下行時,它將以換行符打印單詞。如何更改AWK中的現有打印行
awk 'BEGIN { print "line one\nline two\nline three" }'
如何在同一行中刷新信息並刷新現有行?
例如,在執行循環時,它應該打印'one',然後擦除行並打印'two',然後擦除行並打印'three'等。請您協助我嗎?
嘗試更改換行符\n
以回車\r
(這是否工作取決於您的終端設置)。哦,並打印一大堆尾隨空白符以清除前一行,並使用printf
來避免print
始終添加的自動\n
。
$ awk 'BEGIN { printf "line one \r" }'; sleep 2; awk 'BEGIN {printf "line two \r" }'
通過「消滅行」,我假設你指的是carriage return這可以使用\r
轉義序列來表示。
例如:
[[email protected]]$ awk 'BEGIN { print "line one\rline two\rline three" }'
line three
「行一個」和「行兩個」消失,因爲他們已經消滅和「三號線」所取代。
如果您希望文字在被清除前可以看到一段時間,則需要在每次打印之間插入延遲。
awk 'BEGIN{
printf "line one";
system("sleep 1");
printf "\rline two";
system("sleep 1");
printf "\rline three";
}'
,或者使用循環
echo "one two three" | awk '{
for (i=1; i<=NF; i++) {
printf "\rline %s", $i;
system("sleep 1");
}
}'