Linux 脚本内和脚本外的同一命令的结果不同
当我从脚本中传递此命令时:Linux 脚本内和脚本外的同一命令的结果不同,linux,bash,shell,Linux,Bash,Shell,当我从脚本中传递此命令时: transmission-remote -n 'transmission:transmission' -l | awk '{ s = ""; for (i = 10; i <= NF; i++) s = s $i " "; print s }' | grep "\b\b" | tail -1 但当我在脚本中传递此命令并将结果存储在如下变量中时: test=`transmission-remote -n 'transmission:transmission' -
transmission-remote -n 'transmission:transmission' -l | awk '{ s = ""; for (i = 10; i <= NF; i++) s = s $i " "; print s }' | grep "\b\b" | tail -1
但当我在脚本中传递此命令并将结果存储在如下变量中时:
test=`transmission-remote -n 'transmission:transmission' -l | awk '{ s = ""; for (i = 10; i <= NF; i++) s = s $i " "; print s }' | grep "\b\b" | tail -1`
您的文件是固定宽度格式,没有正确分隔。您可以利用
gawk
的FIELDWIDTHS
变量。由于其他awk
s不支持它,
这里是另一种方法,假设您知道要提取的字段的标题
awk 'NR==1 {p=match($0,"Name")}
length($0)>p {print substr($0,p)}' file
Name
Ghost In The Shell 2 Innocence 2003 MULTi VFF BluRay 1080p AC3 x264
WWE.RAW.2017.03.20.720p.HDTV.x264-Ebi.mp4
WWE.Smackdown.Live.2017.03.21.720p.HDTV.x264-Ebi.mp4
WWE.RAW.2017.03.27.720p.HDTV.x264-Ebi.mp4
WWE.SmackDown.Live.2017.03.28.720p.HDTV.x264-NWCHD.mp4
Micro Pratique N°247 Avril 2017.pdf
要获取最后一条输入记录,请选择tail
或
awk 'NR==1 {p=match($0,"Name")}
length($0)>p {last=substr($0,p)}
END {print last}' file
Micro Pratique N°247 Avril 2017.pdf
使用
“$(传输
..tail-1)”
(使用“$()”
而不是反引号)并查看它是否有效$()
处理嵌入的引号比反引号干净得多,额外的“
使输出保持在一起。使用$(…)
代替反引号有几个原因,但这不是其中之一。什么是grep”\b\b
应该进行过滤?根据其标准输入是否为终端,传输远程
命令可能会改变其输出。将提示时命令本身的输出与foo=$(传输远程-n'transmission:transmission'-l)
的内容进行比较;字段的数量可能不同。请注意,对于进度为0%的下载,“字段”的计数小于1(None
,而不是0 GB
)。因此,文件名中丢失了单词。
ID Done Have ETA Up Down Ratio Status Name
1 100% 8.30 GB Done 1.0 0.0 2.8 Seeding Ghost In The Shell 2 Innocence 2003 MULTi VFF BluRay 1080p AC3 x264
65 100% 4.86 GB Done 0.0 0.0 2.9 Idle WWE.RAW.2017.03.20.720p.HDTV.x264-Ebi.mp4
71 100% 2.89 GB Done 0.0 0.0 2.9 Idle WWE.Smackdown.Live.2017.03.21.720p.HDTV.x264-Ebi.mp4
106 100% 4.80 GB Done 0.0 0.0 0.0 Seeding WWE.RAW.2017.03.27.720p.HDTV.x264-Ebi.mp4
107 100% 2.90 GB Done 0.0 0.0 0.9 Idle WWE.SmackDown.Live.2017.03.28.720p.HDTV.x264-NWCHD.mp4
113 0% None Unknown 0.0 0.0 None Idle Micro Pratique N°247 Avril 2017.pdf
Sum: 23.75 GB 1.0 0.0
awk 'NR==1 {p=match($0,"Name")}
length($0)>p {print substr($0,p)}' file
Name
Ghost In The Shell 2 Innocence 2003 MULTi VFF BluRay 1080p AC3 x264
WWE.RAW.2017.03.20.720p.HDTV.x264-Ebi.mp4
WWE.Smackdown.Live.2017.03.21.720p.HDTV.x264-Ebi.mp4
WWE.RAW.2017.03.27.720p.HDTV.x264-Ebi.mp4
WWE.SmackDown.Live.2017.03.28.720p.HDTV.x264-NWCHD.mp4
Micro Pratique N°247 Avril 2017.pdf
awk 'NR==1 {p=match($0,"Name")}
length($0)>p {last=substr($0,p)}
END {print last}' file
Micro Pratique N°247 Avril 2017.pdf