在 bash 中的剪贴板内容中将每次出现的华氏温度转换为摄氏温度
Convert every occurence of Fahrenheit to Celsius in the clipboard content in bash
真实示例文本:
Mealworms do reproduce in temperatures ranging from 65-100 F, but
temperatures above 86 º F negatively impact growth and development
(inhibiting pupation). The duration of the pupal stage will depend on
temperature. It is six days at 91.4 º F, seven days at 80.6 ºF, ten
days at 75.2º F and thirteen days at 69.8 °F.
运行执行脚本后,剪贴板内容应如下所示:
Mealworms do reproduce in temperatures ranging from 18.3-37.8°C, but
temperatures above 30.0°C negatively impact growth and development
(inhibiting pupation). The duration of the pupal stage will depend on
temperature. It is six days at 33.0°C, seven days at 27°C, ten days at
24°C and thirteen days at 21°C.
带有一些可能组合的示例文本:
100 F
50-100 F
50 - 100 F
50.5 - 100.22 F
100.22F
100.22°F
100.22 °F
100.22 ° F
100.22ºF
100.22 ºF
100.22 º F
我将 运行 脚本作为系统范围的快捷方式,因此按 CTRL+SHIFT+ 我会在剪贴板的内容上调用此脚本,并可能在弹出文本框中显示转换后的内容。
更新:
使用@Bertrand Martel 的答案用作快捷方式的最终脚本是:
/usr/bin/xclip -selection c -o | /usr/bin/perl -pe's/([0-9]*\.?[0-9]+)(\s?(°|º)?\s?F)/sprintf("%.1f°C", (-32)*1\/1.8)/eg; \
s/([0-9]*\.?[0-9]+)(-| - )([0-9]*\.?[0-9]+)°C/sprintf("%.1f°C",(-32)*1\/1.8)/eg' | /usr/bin/xclip -selection c -i && /usr/bin/zenity --info --text="$(/usr/bin/xclip -selection c -o)" --timeout 5
当快捷方式被触发时,脚本会将剪贴板中的文本中每次出现的华氏度都转换为摄氏度。然后使用转换后的值更新剪贴板,内容在弹出窗口中显示 window 5 秒。
您可以使用 Perl 提取您的浮点数并用转换结果替换每个出现的位置:
perl -pe's/([0-9]*\.?[0-9]+)(\s?(°|º)?\s?F)/sprintf("%.1f°C", (-32)*1\/1.8)/eg; \
s/([0-9]*\.?[0-9]+)(-| - )([0-9]*\.?[0-9]+)°C/sprintf("%.1f°C",(-32)*1\/1.8)/eg' text.txt
然后您可以使用 Linux 上的 xclip
、Windows 上的 clip
或 MAC 上的 pbcopy
将结果复制到剪贴板OS :
perl -pe's/([0-9]*\.?[0-9]+)(\s?(°|º)?\s?F)/sprintf("%.1f°C", (-32)*1\/1.8)/eg; \
s/([0-9]*\.?[0-9]+)(-| - )([0-9]*\.?[0-9]+)°C/sprintf("%.1f°C",(-32)*1\/1.8)/eg' text.txt | xclip
真实示例文本:
Mealworms do reproduce in temperatures ranging from 65-100 F, but temperatures above 86 º F negatively impact growth and development (inhibiting pupation). The duration of the pupal stage will depend on temperature. It is six days at 91.4 º F, seven days at 80.6 ºF, ten days at 75.2º F and thirteen days at 69.8 °F.
运行执行脚本后,剪贴板内容应如下所示:
Mealworms do reproduce in temperatures ranging from 18.3-37.8°C, but temperatures above 30.0°C negatively impact growth and development (inhibiting pupation). The duration of the pupal stage will depend on temperature. It is six days at 33.0°C, seven days at 27°C, ten days at 24°C and thirteen days at 21°C.
带有一些可能组合的示例文本:
100 F
50-100 F
50 - 100 F
50.5 - 100.22 F
100.22F
100.22°F
100.22 °F
100.22 ° F
100.22ºF
100.22 ºF
100.22 º F
我将 运行 脚本作为系统范围的快捷方式,因此按 CTRL+SHIFT+ 我会在剪贴板的内容上调用此脚本,并可能在弹出文本框中显示转换后的内容。
更新: 使用@Bertrand Martel 的答案用作快捷方式的最终脚本是:
/usr/bin/xclip -selection c -o | /usr/bin/perl -pe's/([0-9]*\.?[0-9]+)(\s?(°|º)?\s?F)/sprintf("%.1f°C", (-32)*1\/1.8)/eg; \ s/([0-9]*\.?[0-9]+)(-| - )([0-9]*\.?[0-9]+)°C/sprintf("%.1f°C",(-32)*1\/1.8)/eg' | /usr/bin/xclip -selection c -i && /usr/bin/zenity --info --text="$(/usr/bin/xclip -selection c -o)" --timeout 5
当快捷方式被触发时,脚本会将剪贴板中的文本中每次出现的华氏度都转换为摄氏度。然后使用转换后的值更新剪贴板,内容在弹出窗口中显示 window 5 秒。
您可以使用 Perl 提取您的浮点数并用转换结果替换每个出现的位置:
perl -pe's/([0-9]*\.?[0-9]+)(\s?(°|º)?\s?F)/sprintf("%.1f°C", (-32)*1\/1.8)/eg; \
s/([0-9]*\.?[0-9]+)(-| - )([0-9]*\.?[0-9]+)°C/sprintf("%.1f°C",(-32)*1\/1.8)/eg' text.txt
然后您可以使用 Linux 上的 xclip
、Windows 上的 clip
或 MAC 上的 pbcopy
将结果复制到剪贴板OS :
perl -pe's/([0-9]*\.?[0-9]+)(\s?(°|º)?\s?F)/sprintf("%.1f°C", (-32)*1\/1.8)/eg; \
s/([0-9]*\.?[0-9]+)(-| - )([0-9]*\.?[0-9]+)°C/sprintf("%.1f°C",(-32)*1\/1.8)/eg' text.txt | xclip