分页: 1 / 1
如何反选??
发表于 : 2008-07-16 7:37
由 yjcong
比如用awk,
ps -A |awk '{print $2}'
会显示所有的第2个量。
现在, 假如不知道一共有多少个项, 但要显示除了第2个之外的所有的, 该怎么办?
grep 可以用“-v”, awk 或 sed再或cut呢?
-----------------------------------------------------------
另外如何选倒数第3项?
发表于 : 2008-07-16 21:07
由 eexpress
N N'th byte, character or field, counted from 1
N- from N'th byte, character or field, to end of line
N-M from N'th to M'th (included) byte, character or field
-M from first to M'th (included) byte, character or field
cut的。
awk的有倒数后面几个项目的,取反的不知道。还不是man哦。
你不如直接说,你准备干嘛。可能别人的实现方法更好的。
发表于 : 2008-07-16 21:29
由 yjcong
eexpress 写了:N N'th byte, character or field, counted from 1
N- from N'th byte, character or field, to end of line
N-M from N'th to M'th (included) byte, character or field
-M from first to M'th (included) byte, character or field
cut的。
awk的有倒数后面几个项目的,取反的不知道。还不是man哦。
你不如直接说,你准备干嘛。可能别人的实现方法更好的。
那个倒数的也行啊. 我想搞个通用压缩解压缩的script. 问题在 .gz 和 .tar.gz
倒数的, 我找到一种方法, 但好像适用于一行的输入, (用在lls-l 和ps -aux 上都不行)
a=123.456.789.012
echo $a|awk -F . '{ s += NF -2} END {print $s }'
结果是456
发表于 : 2008-07-29 9:09
由 yingfei
方法1:
代码: 全选
A="123 456 8989 1239 13981 983"
echo $A | awk '{gsub($2,""); print}'
方法2:
代码: 全选
A="123 456 8989 1239 13981 983"
echo $A | awk '{ for (t=1;t<=NF;t++) { if (t!=2) print $t } }'
倒数第三列:
代码: 全选
ls -l | awk '{print $(NF-2)}'
不知我的理解是否有误。。
~
发表于 : 2008-07-29 9:14
由 bones7456
yingfei 写了:方法1:
代码: 全选
A="123 456 8989 1239 13981 983"
echo $A | awk '{gsub($2,""); print}'
方法2:
代码: 全选
A="123 456 8989 1239 13981 983"
echo $A | awk '{ for (t=1;t<=NF;t++) { if (t!=2) print $t } }'
不知我的理解是否有误。。
很好.

发表于 : 2008-07-29 9:15
由 eexpress
用压缩解压缩的
这个吗?
代码: 全选
☎ cat 解压到这里.CLI版本
#!/bin/bash
filename="$@"
bname=$(basename "$filename")
dname=$(dirname "$filename")
destdir=${bname}.FILES
[ -w "$dname" ] || dname=${HOME}
if [ ! -d "$destdir" ]; then
cd "$dname"
mkdir "$destdir"
cd "$destdir"
case "$bname" in
*.rar ) unrar e "$filename" ;;
*.tar.gz | *.tgz) tar -xvzf "$filename" ;;
*.tar.bz2 ) tar -xvjf "$filename" ;;
*.tar ) tar -xvf "$filename" ;;
*.gz ) gzip -d "$filename" ;;
*.bz2 | *.bzip2 ) bzip2 -d "$filename" ;;
*.zip ) unzip "$filename" ;;
* ) ;;
esac
fi
其实 file-roller 不都搞好了吗。
发表于 : 2008-07-29 9:32
由 yjcong
eexpress 写了:用压缩解压缩的
这个吗?
代码: 全选
☎ cat 解压到这里.CLI版本
#!/bin/bash
filename="$@"
bname=$(basename "$filename")
dname=$(dirname "$filename")
destdir=${bname}.FILES
[ -w "$dname" ] || dname=${HOME}
if [ ! -d "$destdir" ]; then
cd "$dname"
mkdir "$destdir"
cd "$destdir"
case "$bname" in
*.rar ) unrar e "$filename" ;;
*.tar.gz | *.tgz) tar -xvzf "$filename" ;;
*.tar.bz2 ) tar -xvjf "$filename" ;;
*.tar ) tar -xvf "$filename" ;;
*.gz ) gzip -d "$filename" ;;
*.bz2 | *.bzip2 ) bzip2 -d "$filename" ;;
*.zip ) unzip "$filename" ;;
* ) ;;
esac
fi
其实 file-roller 不都搞好了吗。
谢谢。 不过有个不常见的问题,有时候, 文件名字里会有多余2个点的时候, 这种情况虽然不多见, 但却是存在的。
其实 file-roller 不都搞好了吗
喜欢cli
发表于 : 2008-07-29 9:46
由 yjcong
yingfei 写了:
倒数第三列:
ls -l | awk '{print $(NF-2)}'
~
十分感谢
为什么倒数第4列就不行了?
代码: 全选
ls -l| awk '{print $(NF-3)}'
awk: (FILENAME=- FNR=1) fatal: attempt to access field -1
发表于 : 2008-07-29 9:50
由 bones7456
yjcong 写了:yingfei 写了:
倒数第三列:
ls -l | awk '{print $(NF-2)}'
~
十分感谢
为什么倒数第4列就不行了?
代码: 全选
ls -l| awk '{print $(NF-3)}'
awk: (FILENAME=- FNR=1) fatal: attempt to access field -1
看看一共有几列...
发表于 : 2008-07-29 9:54
由 yjcong
看看一共有几列...
ls -l 有很多列拉
代码: 全选
ls -l |awk '{print $n}'
n=1,2,3,4,5,6,7,8
发表于 : 2008-07-29 10:43
由 bones7456
yjcong 写了:看看一共有几列...
ls -l 有很多列拉
代码: 全选
ls -l |awk '{print $n}'
n=1,2,3,4,5,6,7,8
看看第一行,咋就不仔细点呢? 唉....
发表于 : 2008-07-29 10:50
由 yjcong
bones7456 写了:yjcong 写了:看看一共有几列...
ls -l 有很多列拉
代码: 全选
ls -l |awk '{print $n}'
n=1,2,3,4,5,6,7,8
看看第一行,咋就不仔细点呢? 唉....
谢谢骨头, 大意了。