我想在 shell 脚本中为 ex 运行一个命令,ls -al
我需要提取第 5 行的第 3 个单词。任何人都可以帮忙吗?
我目前拥有的是:
str = $(ls -al foo | cut -d" " -f3)
这是将所有单词存储在第三个字段中,但我无法从第 5 行获取单词。
谁能告诉我如何获得特定的线路,或更优化的解决方案。
试试str=$(ls -al foo | awk 'NR==5{print $3;exit}')
。ls
命令输出不适合解析。还将cut
连续空格计为单独的字段,因此识别单词cut
总是有风险的
实验:-
[[bash_prompt$]]$ ls -al foo
total 12
drwxr-xr-x 2 abasu synopsys 4096 2013-05-09 15:11 .
drwxr-xr-x 9 abasu synopsys 4096 2013-05-09 15:11 ..
-rw-r--r-- 1 abasu synopsys 0 2013-05-09 15:08 a
-rw-r--r-- 1 abasu synopsys 0 2013-05-09 15:08 b
-rw-r--r-- 1 abasu synopsys 1362 2013-05-09 15:11 c
-rw-r--r-- 1 abasu synopsys 0 2013-05-09 15:08 d
-rw-r--r-- 1 abasu synopsys 0 2013-05-09 15:08 e
-rw-r--r-- 1 abasu synopsys 0 2013-05-09 15:08 f
[[bash_prompt$]]$ ls -al foo | awk 'NR==5{print $3;exit}'
abasu
[[bash_prompt$]]$ ls -al foo | awk 'NR==6{print $5;exit}'
1362
[[bash_prompt$]]$ str=$(ls -al foo | awk 'NR==6{print $5;exit}') #for 6th line,5th word
[[bash_prompt$]]$ echo $str
1362
只需将您的命令更改为:
ls -al |head -5|tail -1|cut -d" " -f3