当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 12 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 如何反选??
帖子发表于 : 2008-07-16 7:37 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
比如用awk,
ps -A |awk '{print $2}'
会显示所有的第2个量。

现在, 假如不知道一共有多少个项, 但要显示除了第2个之外的所有的, 该怎么办?

grep 可以用“-v”, awk 或 sed再或cut呢?
-----------------------------------------------------------
另外如何选倒数第3项?


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-07-16 21:07 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
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哦。

你不如直接说,你准备干嘛。可能别人的实现方法更好的。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-07-16 21:29 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
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


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-07-29 9:09 
头像

注册: 2007-09-03 18:34
帖子: 273
地址: 羊城通
送出感谢: 0 次
接收感谢: 0 次
方法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)}'


不知我的理解是否有误。。
~


最后由 yingfei 编辑于 2008-07-29 9:17,总共编辑了 1 次

页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-07-29 9:14 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
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 } }'


不知我的理解是否有误。。

很好. :lol:


_________________
关注我的blog: ε==3


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-07-29 9:15 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 272
引用:
用压缩解压缩的

这个吗?
代码:
☎  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 不都搞好了吗。


_________________
● 鸣学


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-07-29 9:32 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
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


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-07-29 9:46 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
yingfei 写道:
倒数第三列:
ls -l | awk '{print $(NF-2)}'
~


十分感谢

为什么倒数第4列就不行了?

代码:
ls -l| awk '{print $(NF-3)}'
awk: (FILENAME=- FNR=1) fatal: attempt to access field -1


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-07-29 9:50 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
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

看看一共有几列...


_________________
关注我的blog: ε==3


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-07-29 9:54 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
引用:
看看一共有几列...


ls -l 有很多列拉

代码:
ls -l |awk '{print $n}'

n=1,2,3,4,5,6,7,8


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-07-29 10:43 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
yjcong 写道:
引用:
看看一共有几列...


ls -l 有很多列拉

代码:
ls -l |awk '{print $n}'

n=1,2,3,4,5,6,7,8

看看第一行,咋就不仔细点呢? 唉....


_________________
关注我的blog: ε==3


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-07-29 10:50 
头像

注册: 2006-02-28 3:11
帖子: 2470
送出感谢: 0 次
接收感谢: 0 次
bones7456 写道:
yjcong 写道:
引用:
看看一共有几列...


ls -l 有很多列拉

代码:
ls -l |awk '{print $n}'

n=1,2,3,4,5,6,7,8

看看第一行,咋就不仔细点呢? 唉....


谢谢骨头, 大意了。


_________________
一梦三年,
松风依旧,
萝月何曾老.


灵幽听微, 谁观玉颜?
灼灼春华, 绿叶含丹.


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 12 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译