Bash脚本:使用sed和cut输出特定格式
我正在使用sed和cut编写一个bash脚本,它将以各种方式输入并以特定格式输出时间。下面是一行示例:Bash脚本:使用sed和cut输出特定格式,bash,sed,cut,Bash,Sed,Cut,我正在使用sed和cut编写一个bash脚本,它将以各种方式输入并以特定格式输出时间。下面是一行示例: timeinhour=$(cut -d" " -f2<<<"$line" | sed 's/p/ /' | sed 's/a/ /' | sed 's/am/ /' | sed 's/pm/ /' | sed 's/AM/ /' | sed 's/PM/ /' ) 如果有人有任何建议,我将不胜感激 例如,此输入: 1p 1032AM 419pm 1202a 将产生: 1
timeinhour=$(cut -d" " -f2<<<"$line" | sed 's/p/ /' | sed 's/a/ /' | sed 's/am/ /' | sed 's/pm/ /' | sed 's/AM/ /' | sed 's/PM/ /' )
如果有人有任何建议,我将不胜感激
例如,此输入:
1p
1032AM
419pm
1202a
将产生:
1
10
4
12
尝试:
timeinhour=$(切割-d”“-f2
台阶
1p -> 1 -> 100 -> 1
10a -> 10 -> 1000 -> 10
419pm -> 419 -> 419 -> 4
1202a -> 1202 -> 1202 -> 12
- 删除不属于数字的内容
- 将1或2位(小时)扩展为4位HHmm
- 忽略最后两个字符(分钟)
很抱歉。显示的特定行的输入将是一个时间,可能以各种格式写入。示例输入:1p 1032AM 419pm 1202a。输出将只是一天中的小时。示例输入=输出组合:1p=1 1032AM=10 419pm=4 1202a=12@mu太短了:这就是他的意思。很有魅力!谢谢你解释为w嗯。
timeinhour=$(cut -d" " -f2<<<"$line" | sed 's/p/ /;s/a/ /;s/am/ /;s/pm/ /;s/AM/ /;s/PM/ /' | sed 's/\(.*\)../\1/' # Using your example.
sed 's/[^0-9]//g;s/^[0-9]\{1,2\}$/&00/;s/^\(.*\)..$/\1/'
1p -> 1 -> 100 -> 1
10a -> 10 -> 1000 -> 10
419pm -> 419 -> 419 -> 4
1202a -> 1202 -> 1202 -> 12