linux shell 将多行文件转换为一行

2014-5-8 杜世伟 Linux

说实话,虽然对shell编程包括awk有所了解,但是对sed的多行与一行的处理还是不甚理解,在网上搜罗了一篇文章觉得还不错,记录一下:
 
 
今天一个工程师问我,怎么将一个文件中的多行转换成一行。
      我给出了如下三种方法:
      1. 采用awk
      awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' file
      说明:awk默认将记录分隔符(record separator即RS)设置为\n,此行代码将RS设置为EOF(文件结束),也就是把文件视为一个记录,然后通过gsub函数将\n替换成空格,最后输出。
      2. 采用sed
      sed ':a ; N;s/\n/ / ; t a ; ' file
      说明:sed默认只按行处理,N可以让其读入下一行,再对\n进行替换,这样就可以将两行并做一行。但是怎么将所有行并作一行呢?可以采用sed的跳转功能。:a 在代码开始处设置一个标记a,在代码执行到结尾处时利用跳转命令t a重新跳转到标号a处,重新执行代码,这样就可以递归的将所有行合并成一行。

阅读全文>>

标签: linux shell awk

评论(0) 浏览(9695)

Web基础架构:负载均衡和LVS

2014-5-4 杜世伟 架构

在大规模互联网应用中,负载均衡设备是必不可少的一个节点,源于互联网应用的高并发和大流量的冲击压力,我们通常会在服务端部署多个无状态的应用服务器和若干有状态的存储服务器(数据库、缓存等等)。

一、负载均衡的作用

负载均衡设备的任务就是作为应用服务器流量的入口,首先挑选最合适的一台服务器,然后将客户端的请求转发给这台服务器处理,实现客户端到真实服务端的透明转发。最近几年很火的「云计算」以及分布式架构,本质上也是将后端服务器作为计算资源、存储资源,由某台管理服务器封装成一个服务对外提供,客户端不需要关心真正提供服务的是哪台机器,在它看来,就好像它面对的是一台拥有近乎无限能力的服务器,而本质上,真正提供服务的,是后端的集群。

阅读全文>>

标签: haproxy lvs web tcp

评论(0) 浏览(2201)

vim 大小写快速转换

2014-5-2 杜世伟 Vim

平时在写程序的过程中会经常遇到大小写转换的问题.我们可以借助命令命令tr和sed进行转换.
,vim中提供了很多非常方便的大小写转换命令,可以快速的进行字母、单词、任意行的大小写转换,可以和vim的光标移动指令组合使用。


范例:
 
:1,$ s/.*/\L&/ #整个文件全部转换为小写
:1,$ s/.*/\U&/ #整个文件全部转换为大写
:1,$ s/\<./\u&/g #整个文件中每个单词的首字母大写

:1,$ s/\<./\u&/gc 
#带确认提示首字母转成大写,此模式会进行确认信息交互,选择参数有replace with \u& (y/n/a/q/l/^E/^Y)?
#1)y确认转换
#2)n不进行转换
#3)a文件中全部替换
#4)q退出替换模式 
#5)l替换第一个然后退出交互 
#6)^E/^Y这两个暂未明白

阅读全文>>

标签: linux vim sed tr

评论(0) 浏览(21194)

mysql 为用户添加资源限制

2014-3-22 杜世伟 Mysql

在使用MySQL中Grant新增用户的时候,为用户添加资源限制

在MySQL中,你可以为单独的用户设置MySQL的资源使用限制。可用的资源限制如下:

阅读全文>>

标签: grant mysql show

评论(0) 浏览(3540)

linux vsftpd 安装

2014-3-15 杜世伟 Nginx

安装命令:yum install vsftpd

vsftpd服务器的启动、停止、重启、状态  

service vsftpd start        ./etc/init.d/vsftpd start
  service vsftpd stop        ./etc/init.d/vsftpd stop
  service vsftpd restart     ./etc/init.d/vsftpd restart
  service vsftpd status      ./etc/init.d/vsftpd status

阅读全文>>

标签: linux vsftpd

评论(0) 浏览(2994)

Lua 随机数生成问题

2014-3-14 杜世伟 Lua

lua 随机战斗游戏,每次每次创建玩家的时候属性基本都是一样的,因为使用了math.randomseed(os.time());看完以下文章是math.randomseed()时间间隔太短造成的

Lua 生成随机数需要用到两个函数:
math.randomseed(xx), math.random([n [, m]])

1. math.randomseed(n) 接收一个整数 n 作为随机序列种子。

阅读全文>>

标签: lua math random

评论(0) 浏览(4275)

(转)cocos2dx 之Node函数

2014-3-13 杜世伟 cocos2d-x

//获取节点的顺序,ZOrder:节点的Z轴,当有多个节点在屏幕显示时,引擎会根据它们Z轴的大小决定绘制顺序,Z轴大的会盖住Z轴小的
virtual int getZOrder(void)
//获取节点的位置(x,y)
virtual const CCPoint& getPosition(void)
//设置节点的位置
virtual void setPosition(const CCPoint &var)
//获取其对应的摄像机,因为cocos2d-x是通过3D方式绘制2D效果的
virtual CCCamera* getCamera(void)
//判断节点是否可见
virtual bool getIsVisible(void)

阅读全文>>

标签: cocos2dx cocos2d-x node

评论(0) 浏览(15437)

lua 随机战斗游戏

2014-3-12 杜世伟 Lua

----初始化玩家数据
function create_player()
for num=1,2,1 do  -- 创建两个玩家
local tmp = {name="newplayer",hp=0,mp=0,atk=0,def=0,spd=0,luk=0,mg=0}
randomseed();
tmp.hp  = math.random(400,1000);
tmp.mp  = math.random(1,100);
tmp.atk = math.random(1,100);
tmp.atk = math.random(1,100);
tmp.spd = math.random(1,100);
tmp.luk = math.random(1,100);
tmp.mg = math.random(1,100);
table.insert(players,tmp);
end
end

阅读全文>>

标签: lua math random

评论(0) 浏览(4330)

mysql 批量删除指定前缀的表

2014-3-10 杜世伟 Mysql

mysql批量删除指定前缀的表,巧妙的使用mysql中提供的concat函数;CONCAT()函数用于将多个字符串连接成一个字符串,通过使用这个函数巧妙的查询mysqlinformation_schema数据库中tables表拼接成drop语句,然后执行:

Select CONCAT( 'drop table ', table_name, ';' )  FROM information_schema.tables Where table_name LIKE 'a_%';

阅读全文>>

标签: mysql drop

评论(0) 浏览(2806)

什么是线程

2014-3-1 杜世伟 Linux

线程thread是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。

线程是独立调度和分派的基本单位。线程可以操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux平台的POSIX Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。

阅读全文>>

标签: linux tread

评论(0) 浏览(15380)

Powered by emlog 沪ICP备2023034538号-1