美文网首页
awk+sed+vim等技巧

awk+sed+vim等技巧

作者: MwinxAxniwM | 来源:发表于2018-09-12 15:49 被阅读0次

awk技巧

awk的内置变量:

  • FS:(Input Field Separator)
    表示awk所认知的分隔符

  • OFS:(Output Field Separator)
    表示输出文件的分隔符
    awk -F':' 'BEGIN{OFS="=";} {print $3,$4;}' /etc/passwd

  • RS:(Record Seperator)
    RS表示每一行的分割符,默认是'\n'
    cat student.awk BEGIN { RS="\n\n"; FS="\n"; } { print $1,$2; }

  • ORS:(Output Record Separator)
    表示输出的的行分割符,与RS相对应

  • NR:(Number of Record)
    这个比较常用,表示awk当前处理第几行

  • NF:(Number of Field)
    表示awk处理当前行有几个单词(按照分隔符分开,默认为空格)

  • FNR: (Number of Records related to current Input File)
    表示当前处理行在当前处理文件的第几行

awk模式扫描处理:

awk -F ":" '{print "USER:" 1 "\tSHELL: "7 }' /etc/passwd
awk -f file.awk /etc/passwd

awk变量:

FILENAME 当前输入的文件名称
FNR 当前输入的文件的记录数
FS 字段分隔符(支持正则表达式),默认空格
NF 当前记录的字段数
NR 在工作(job)中的记录数
OFS 输出字段分隔字符
ORS 输出记录分隔字符(默认为“\n”)
RS 输入记录分隔字符
$ cat etc_passwd.awk
BEGIN{
FS=":";
print "Name\tUserID\tGroupID\tHomeDirectory";
}

{
    print $1"\t"$3"\t"$4"\t"$6;
}
END {
    print NR,"Records Processed";
}

$awk -f etc_passwd.awk /etc/passwd

$cat student.txt
Jones
2143
78
84
77

Gondrol
2321
56
58
45

$cat student.awk
BEGIN {
    RS="\n\n";
    FS="\n";

}
{
    print $1,$2;
}

$ awk -f student.awk  student.txt
Jones 2143
Gondrol 2321

$cat student-marks
Jones 2143 78 84 77
Gondrol 2321 56 58 45

$ awk '{print NR,"->",NF}' student-marks
1 -> 5
2 -> 5

awk '{print FILENAME}' student-marks


vim技巧

:s/test1/test2/
:s/test1/test2/g
:n,$/test1/test2/g
:%s/test1/test2/g #替换每一行的字符

  • 删除文本中的^M :
    cat filename1 | tr -d "VM" > newfile
    sed -e "s/VM//" filename > outputfilename

  • :%s/VM//

文本处理命令:

sort常用参数:
-t 指定一行的分隔符
-k 指定具体排序的规则
-d 按字典序排列
-f 忽略大小写
-u (unique)丢弃相同指定字段的记录

unique:报告或删除文件中重复的行
-c 在输出行前加上出现的次数
-d (duplicated)显示重复的行
-u 仅显示不重复的行

wc:统计文本行数,字数和字符数
-c 字符数
-w 单词数
-l 行数

pr:将文本转换成适合打印的格式
-c 显示的列数(截断超出的部分)

fmt: 优化文本的格式
-w 设置一行显示的最大行宽
-s 只对过长的行进行换行,不要自动回填。

fold:限制文本宽度(强行截断并换行)
-w 指定宽度
-s 只在空格处换行。

cut :截取行的字段
-delimiter 设置字段分割符
-f List 设置截取的域

List可以是M,M-,M-N -M;可以用逗号指定多个

join:连接两个文件的数据字段
join file1 file2 -1 M -2 N

M、N指定匹配的字段

tr: 文本替换
tr set set :将str1上字符替换成str2上对于位置的字符;(可以是 tr 'a-z' 'A-Z')
tr {-d|-s} set :-d 删除set上的每一个字符 ;-s 除去连续出现的set中的字符,至只剩下单个
tr -c (complement 互补)使用set1的外的其他字符 [例子:tr -cs '[:lower:][:upper:]' '[\n*]' 单词表]

sed流编辑器:

  • sed -e '1,5d' test.txt
  • sed -e '/^#/d' test.txt

^ 与行首匹配
$ 与行尾匹配
. 与任意一个字符匹配
* 与之前一个字符的零个或多个出现匹配
[] 与[]之间的所有字符匹配

  • 替换文本:

sed -e "s/benson/BENSON/g" 将benson 替换成大写
sed -e "1,10s/benson/BENSON/g" 将1-10行的benson变成大写

  • 多条命令一起执行:

sed -n -e "=;p" #打印行号;打印行
等价与 sed -e "=" -e "p"

  • 多条命令于同一地址范围:

sed -n -e '1,5{s/benson/BENSON/g;s/laur/LAUR/g}'

  • 把命令放在文件fsed里:

sed -n -f fsed

相关文章

  • awk+sed+vim等技巧

    awk技巧 awk的内置变量: FS:(Input Field Separator)表示awk所认知的分隔符 OF...

  • 2018.7.27

    看了第三张第二节,主要讲键盘使用技巧,鼠标使用技巧,鼠标键盘联合使用技巧等小技巧。

  • 论技巧学习的必要性

    技巧,可以理解为巧妙掌握一门技能的方法,发于技成于巧。包括学习技巧,写作技巧,泡妞技巧,社交技巧等各门各类。 随着...

  • 和你一起变好,我很幸运

    这是我们新上线的商学院功能,以后不管是产品知识还是销售技巧,建群技巧,地推技巧,活动技巧等各项课程都可以同步在商学...

  • 所谓的安卓aso优化技巧原来是这样子的

    我们每个人都是想要所谓的苹果aso优化技巧、安卓aso优化技巧等,认为掌握了所谓的“aso优化技巧”就能解决了应用...

  • 001-20180101-Excel技巧学习(一)

    O 今天开始学习Excel应用的小技巧,主要学习了多条件筛选、批量加汉字、处理重复值等小技巧,这些技巧都可以慢慢积...

  • 沟通

    所谓沟通技巧,是指人利用文字、语言与肢体语言与等手段与他人进行交流使用的技巧。沟通技巧涉及许多方面,如简化...

  • 晨读感悟:生活无处不演讲,会说才能把握人生!

    你平时与人沟通,你也需要演讲技巧,比如肢体语言,比如表达逻辑,比如讲故事的技巧,比如说报技巧,比如快速反应的能力等...

  • 范冰冰等明星御用化妆师绝密化妆技巧大揭秘~!!!

    范冰冰等明星御用化妆师绝密化妆技巧大揭秘~!!!

  • 沟通艺术

    所谓沟通技巧,是指人利用文字、语言肢体语言与等手段与他人进行交流使用的技巧。沟通技巧涉及许多方面,如简化运用语言、...

网友评论

      本文标题:awk+sed+vim等技巧

      本文链接:https://www.haomeiwen.com/subject/wtavgftx.html