LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1501|回复: 4

如何删除一个文本中每行的第二个单词?

[复制链接]
发表于 2008-1-21 23:35:15 | 显示全部楼层 |阅读模式
如例文本内容如下:
qwer one lja;fdslkfjkdls

erty two dkjsl;ldafj;dlfk

kdjfjdjf   zero    ls;fkjl;dsfla;

如何删除每行的第二个单词?也就是on two zero这三个单词,当然实际中可能是别的单词
发表于 2008-1-21 23:50:34 | 显示全部楼层
首先移动的你要改的第一行
然后按着下述命令:
esc
qa
^
w
dw
^
j
q
10@a
假设你有10行
参见:
http://vcd.gro.clinux.org/doc/usr_10.html#usr_10.txt
回复 支持 反对

使用道具 举报

发表于 2008-1-22 11:24:33 | 显示全部楼层
  1. sed 's/\([^[:blank:]]*\)[[:blank:]]*[^[:blank:]]*/\1/' 数据文件
  2. 或者
  3. awk '{$2="";print}' 数据文件
  4. 如果是在vim中编辑的话,可以用
  5. :1,$s/\([^[:blank:]]*\)[[:blank:]]*[^[:blank:]]*/\1/
  6. 这样的命令来完成
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-1-22 20:55:05 | 显示全部楼层
谢谢楼上几位,我刚才试了一下发现有个问题,将下面这段代码保存到一个文件里比如123.txt中,然后对其执行awk '{$2="";print}' 123.txt 和 sed 's/\([^[:blank:]]*\)[[:blank:]]*[^[:blank:]]*/\1/'  123.txt发现结果不一样的,为什么?

#/bin/bash
rm -rf /home/gao/123.txt
clear
for i in 10.82.88.{2..250}; do
echo "Now testing $i ,please wait...."
ip route del default
ifconfig eth0 $i netmask 255.255.254.0
ip route add default via 10.82.88.1
if ping 10.82.88.1 -c2 >/dev/null ; then
echo -e "$i   \e[32mYES\e[0m"
else
echo -e "$i   \e[31mNO\e[0m"
echo $i >> /home/gao/123.txt
fi
done
回复 支持 反对

使用道具 举报

发表于 2008-2-3 12:00:37 | 显示全部楼层
$ cat file
qwer one lja;fdslkfjkdls

erty two dkjsl;ldafj;dlfk

kdjfjdjf zero ls;fkjl;dsfla
$ perl -e 's/(\S+)\s+\S+(.*)/$1$2/ and print foreach <>' file
qwer lja;fdslkfjkdls
erty dkjsl;ldafj;dlfk
kdjfjdjf ls;fkjl;dsfla
$

简陋的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表