LINUX中的命令

整理一些日常用到的命令和写脚本时用的命令作为记录,方便自己查找。

获取文件的第m行到最后一行

cat xxx | tail -n +m

获取文件的第N行 第n列
#获取第五行数据
cat xxx | sed -n '5p'
#获取第n列数据
cat xxx | awk '{print $5}'
字符串分割

使用IFS分割字符串时。分割完及时将IFS的值还原。否则每次获取变量的时候都会分割。(多么痛的领悟)

#旧IFS备份
OLD_IFS=${IFS}
#指定新的分割符
IFS=","
#切割字符串
strArr=(${str})
#还原IFS的值
IFS=${OLD_IFS}
xargs命令

本命令原帖:https://www.cnblogs.com/wangqiguo/p/6464234.html
一下记录是便于自己理解的整理。
简单来说,就是将管道符前传递过来的数据当成参数(大约可以这么理解)。例如:echo “–help” | cat 这个命令会输出–help。但是,当写成这样:echo “–help”|xargs cat执行后,会输出cat的使用文档。原因是,将–help标准输入当成cat的参数来使用。
-d: 指定标准输入数据的间隔
例:echo “123@123” | xargs -d ‘@’ echo会输出123 123。不指定-d的时候直接输出123@123
-n: 指定参数数量。
例:echo"123@123@123@123" | xargs -d ‘@’ -n 2 echo管道符后的echo命令会执行两次。前一个echo标准输入的参数123 123 123 123会被xargs每两个调用后一个echo命令一次。
-E: 用于搜索标准输入的数据。不能与 -d 一起使用。
例:echo “123 123 33 123 123” | xargs -E ‘33’ echo时。只会输出123 123。忽略33及之后的数据。
-i/-l: 用于填充数据。区别在于-i不需要指定替换的位置,直接替换在{}中。-l需要指定替换的内容。
例:find . -type f -name “* .log” | xargs -i cp {} /tmp/
find . -type f -name “* .log” | xargs -I {} cp {} /tmp/

:>/tmp/test.txt

文件test.txt如果存在就清空文件中内容,如果不存在就创建文件。

处理数据管道符后接head命令要注意

类似sed命令、tr命令之类的处理数据的命令,后衔接head命令可能会导致报错。可以将两个命令位置对调解决。原因貌似是因为前一个命令没有将数据处理完,head截取时导致的错误,如果有大大知道原因,欢迎点出。

linux中各种判断

转载,原文地址:http://blog.sina.com.cn/s/blog_67e2ef6a0100tea1.html

[ -a FILE ]  如果 FILE 存在则为真。  

[ -b FILE ]  如果 FILE 存在且是一个块特殊文件则为真。  

[ -c FILE ]  如果 FILE 存在且是一个字特殊文件则为真。  

[ -d FILE ]  如果 FILE 存在且是一个目录则为真。  

[ -e FILE ]  如果 FILE 存在则为真。  

[ -f FILE ]  如果 FILE 存在且是一个普通文件则为真。  

[ -g FILE ]  如果 FILE 存在且已经设置了SGID则为真。  

[ -h FILE ]  如果 FILE 存在且是一个符号连接则为真。  

[ -k FILE ]  如果 FILE 存在且已经设置了粘制位则为真。  

[ -p FILE ]  如果 FILE 存在且是一个名字管道(F如果O)则为真。  

[ -r FILE ]  如果 FILE 存在且是可读的则为真。  

[ -s FILE ]  如果 FILE 存在且大小不为0则为真。  

[ -t FD ]  如果文件描述符 FD 打开且指向一个终端则为真。  

[ -u FILE ]  如果 FILE 存在且设置了SUID (set user ID)则为真。  

[ -w FILE ]  如果 FILE 如果 FILE 存在且是可写的则为真。  

[ -x FILE ]  如果 FILE 存在且是可执行的则为真。  

[ -O FILE ]  如果 FILE 存在且属有效用户ID则为真。  

[ -G FILE ]  如果 FILE 存在且属有效用户组则为真。  

[ -L FILE ]  如果 FILE 存在且是一个符号连接则为真。  

[ -N FILE ]  如果 FILE 存在 and has been mod如果ied since it was last read则为真。  

[ -S FILE ]  如果 FILE 存在且是一个套接字则为真。  

[ FILE1 -nt FILE2 ]  如果 FILE1 has been changed more recently than FILE2, or 如果 FILE1 exists and FILE2 does not则为真。  

[ FILE1 -ot FILE2 ]  如果 FILE1 比 FILE2 要老, 或者 FILE2 存在且 FILE1 不存在则为真。  

[ FILE1 -ef FILE2 ]  如果 FILE1 和 FILE2 指向相同的设备和节点号则为真。  

[ -o OPTIONNAME ]  如果 shell选项 “OPTIONNAME” 开启则为真。  

[ -z STRING ]  “STRING” 的长度为零则为真。 字符串为空即NULL时为真。 

[ -n STRING ] or [ STRING ]  “STRING” 的长度为非零 non-zero则为真。加-n与不加-n结果相同。  

[ STRING1 == STRING2 ]  如果2个字符串相同。 “=” may be used instead of “==for strict POSIX compliance则为真。  

[ STRING1 != STRING2 ]  如果字符串不相等则为真。 

[ STRING1 < STRING2 ]  如果 “STRING1” sorts before “STRING2” lexicographically in the current locale则为真。  

[ STRING1 > STRING2 ]  如果 “STRING1” sorts after “STRING2” lexicographically in the current locale则为真。
循环文件
find /xxxx/xx/xx/xxx/xxx -type f |
while read line ; do
	#数据处理
done

#管道中循环数据
echo "1 2 3"|while read line ;do echo ${line} ;done
shell获取时间用
# 获取一年前的当前时间
date -d "-1 year" +%Y%m%d
date -d "-1 month" +%Y%m%d
date -d "-1 day" +%Y%m%d
#获取当月一年前的第一天
date -d "-1 year" +%Y%m"01"
#获取当前时间
date +%Y%m%d
json格式文本处理

使用jq命令读取及修改json数据

#从json文本中读取数据
#读取结果为纯文本
cat test | jq -r ".key"
#读取结果为带格式文本
cat test | jq ".key"

#更换json文本中的数据;value可以是变量${paramName}
cat test | jq ".key=value" 
#或者;当key为paramName时,替换值为value
cat test | jq 'to_entries |map (if .key=="paramName" then . + {"value":"value"} else . end )|from_entries'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值