以下是我在学习linux命令的时候随手记的一些命令:
文本切割:
cut -d";" [file] 自定义分割符 -b 按字节 -c 按字符
echo "123" | cut -c 1 // 按字符切割,取第一个字符
echo "123" | cut -c 1-2,3 // 按字符切割,取第123个字符
echo "1,2,3" | cut -d, -f1-2,3 // 自定义,分割,取1-3
sed 文本操作
-n 安静模式,处理哪行列出哪行
-e 直接在指令列模式上进行sed的动作编辑
-f 直接将sed的动作写到一个档案里 -f filename
-r 正则
-i 修改并保存
命令:a 新增 c取代(指定位置,全部替换,区间) d删除 i插入 p列印 s取代(替换部分或全部)
sed -i '1a hello' test.txt 在test.txt第一行后面添加hello
sed -i '1,3c hello' test.txt 将test.txt中1-3行替换成hello
sed -i '1d' test.txt 将test.txt中第一行删除
sed -i '1,3i hello' test.txt 在test.txt第1-3行下面加是加上hello行
sed -i '1,3s/old/new/g' test.txt 在test.txt中将1-3行中的old替换成new
sed -i 's/^test.*$/hello world/' test.txt 将test.txt中以test开头的行用hello world替换
*号的含义,对*之前的符号匹配0个或多个
1,3c 1和3都可以使用正则匹配进行替换
!d 删除没有匹配到的行
grep 文本搜索
-c 输出匹配行数
-v 显示不包含匹配文本的所有行
-n 显示匹配行及行号
-i 不区分大小写
-h 查询多文件时不显示文件名
-s 不显示不存在或无匹配文本的错误信息
文件搜索
find / -name "*.txt"
less 查看文件 可直接跳最后查看
cat 查看文件
tail 查看文件
tail -f 查看文件,会动态更新
tail -F 删除文件再次创建后,会自动再次监听
touch 修改文件的时间属性 touch file 修改文件的时间属性为当前系统时间(文件不存在,创建)
awk 文本操作
awk -F "分割符" 'BEGIN {print NF} {print NR} END {print "end"}' test.txt
cat test.txt | awk ...
awk -F " " '{for(i=0;i<3;i++) print i}' test.txt
awk -F " " '/test/{print NR}' test.txt
cp -f 强制复制
-i 复制之前询问
-r 递归处理
-b 覆盖已存在文件之前先将目标文件备份
-v 详细显示命令执行操作
$$ 当前脚本的pid
$? 上个函数的返回
$# 参数个数
$0 文件名
$1 第一个参数
$* 所有参数 "a b c d"
$@ 所有参数 "a" "b" "c" "d"