diff --git a/languages/bash.sh b/languages/bash.sh index a08a23d..c45f583 100644 --- a/languages/bash.sh +++ b/languages/bash.sh @@ -1,6 +1,6 @@ ############################################################################## # BASH CHEATSHEET (中文速查表) - by skywind (created on 2018/02/14) -# Version: 12, Last Modified: 2018/02/25 01:56 +# Version: 13, Last Modified: 2018/02/25 03:24 # https://github.com/skywind3000/awesome-cheatsheets ############################################################################## @@ -482,6 +482,69 @@ n>&- # 关闭作为输出的文件描述符 n n<&- # 关闭作为输入的文件描述符 n +############################################################################## +# 文本处理 - cut +############################################################################## + +cut -c 1-16 # 截取每行头16个字符 +cut -c 1-16 file # 截取指定文件中每行头 16个字符 +cut -c3- # 截取每行从第三个字符开始到行末的内容 +cut -d':' -f5 # 截取用冒号分隔的第五列内容 +cut -d';' -f2,10 # 截取用分号分隔的第二和第十列内容 +cut -d' ' -f3-7 # 截取空格分隔的三到七列 +echo "hello" | cut -c1-3 # 显示 hel +echo "hello sir" | cut -d' ' -f2 # 显示 sir +ps | tr -s " " | cut -d " " -f 2,3,4 # cut 搭配 tr 压缩字符 + + +############################################################################## +# 文本处理 - awk / sed / sort +############################################################################## + +awk '{print $5}' file # 打印文件中以空格分隔的第五列 +awk -F ',' '{print $5}' file # 打印文件中以逗号分隔的第五列 +awk '/str/ {print $2}' file # 打印文件中包含 str 的所有行的第二列 +awk -F ',' '{print $NF}' file # 打印逗号分隔的文件中的每行最后一列 +awk '{s+=$1} END {print s}' file # 计算所有第一列的合 +awk 'NR%3==1' file # 从第一行开始,每隔三行打印一行 + +sed 's/find/replace/' file # 替换文件中首次出现的字符串并输出结果 +sed -r 's/regex/replace/g' file # 替换文件中所有出现的字符串 +sed -i 's/find/replace/g' file # 替换文件中所有出现的字符并且覆盖文件 +sed '/line/s/find/replace/' file # 先搜索行特征再执行替换 +sed -e 's/f/r/' -e 's/f/r' file # 执行多次替换 +sed 's#find#replace#' file # 使用 # 替换 / 来避免 pattern 中有斜杆 +sed -i -r 's/^\s+//g' file # 删除文件每行头部空格 +sed '/^$/d' file # 删除文件空行并打印 +sed -i 's/\s\+$//' file # 删除文件每行末尾多余空格 + + +############################################################################## +# 排序 - sort +############################################################################## + +sort file # 排序文件 +sort -r file # 反向排序(降序) +sort -n file # 使用数字而不是字符串进行比较 +sort -t: -k 3n /etc/passwd # 按 passwd 文件的第三列进行排序 +sort -u file # 去重排序 + + +############################################################################## +# 键盘绑定 +############################################################################## + +bind '"\eh":"\C-b"' # 绑定 ALT+h 为光标左移,同 CTRL+b / +bind '"\el":"\C-f"' # 绑定 ALT+l 为光标右移,同 CTRL+f / +bind '"\ej":"\C-n"' # 绑定 ALT+j 为下条历史,同 CTRL+n / +bind '"\ek":"\C-p"' # 绑定 ALT+k 为上调历史,同 CTRL+p / +bind '"\eH":"\eb"' # 绑定 ALT+H 为光标左移一个单词,同 ALT-b +bind '"\eL":"\ef"' # 绑定 ALT+L 为光标右移一个单词,同 ALT-f +bind '"\eJ":"\C-a"' # 绑定 ALT+J 为移动到行首,同 CTRL+a / +bind '"\eK":"\C-e"' # 绑定 ALT+K 为移动到行末,同 CTRL+e / +bind '"\e;":"ls -l\n"' # 绑定 ALT+; 为执行 ls -l 命令 + + ############################################################################## # 有趣的命令 ##############################################################################