gcode 파일이 있는데 Z의 모든 값에서 101.54를 빼야 합니다. 형식은[Z]:[0-9]*.[0-9]*
sed
이 작업을 수행하려면 다른 Linux 도구를 어떻게 사용합니까 ?
좋아요: Z:101.6
결국 로 변경됩니다 Z:0.06
.
미리 감사드립니다
答え1
$ echo "Z:101.6" | perl -p -e 's/Z:(\d+(?:\.\d+)?)/sprintf("Z:%.2f",$1-101.54)/eg'
Z:0.06
이는 Perl의 /e
정규식 수정자를 사용하여 연산자 오른쪽의 표현식을 평가합니다 s///
. 나중에 정수와 부동 소수점을 처리 Z:
하고 대체합니다.모두入力行のどこでも見つかったパターンと一致します。
答え2
これは仕事ですawk
。
awk 'BEGIN{FS=OFS=":"}{$2-=101.54;print}'
BEGIN{FS=OFS=":"}
入力フィールドと出力フィールドの区切り文字をコロンに設定します。{$2-=101.54;print}
各行について、2番目のフィールドから101.54を減算して印刷します。- 必要に応じてまたはを使用して行を制限できますが、コマンドをグローバルに作成する必要があり
$1=="Z"{...}
ます(そうでない場合は、すべての行を省略します)。print
いいえ参照Z
)、例えば
または$1=="Z"{$2-=101.54} 1
$1=="Z"{$2-=101.54} {print}
例:
$ echo 'Z:101.6' | awk 'BEGIN{FS=OFS=":"}{$2-=101.54;print}'
Z:0.06