java awk_sed 和 awk 的一些用法

1. 截取test 文件指定字段

test文件内容: ert fff ** [abcfd] 123 324 444 [rty] ** fgfgf

截取下面段: [abcfd] 123 324 444 [rty]

8c6432123c2054df3e480cf5488148ba.png

cae979c7b318055eaab94a1850c4ed1f.png

aed949db43e18ece296edb40d9a4af4e.png

2. sed中,使用\u表示大写,\l表示小写

把每个单词的第一个小写字母变成大写

把所有小写变成大写

大写变小写

61778c07b709e6596915a967243fd230.png

3. sed在文件中某一行最后添加一个数字

e215874e0cb5f444082a001e84ca7eeb.png

4. sed 删除某个关键字的下一行到最后一行

f61a03cd66e9286507ad8c335de12e57.png

b88c7e672783858b7ccc9b74656b0412.png

5. 是使用 sed 打印1到 10 行内包含 某字符串的行

36ffb7b50e5b0991573e90ced54d3eed.png

6. 在awk 中使用外部shell 变量

05ceea5bcfbe764cdf89f0fe4833b25b.png

7. awk 合并两个文件

3a2f0a371ba08e31048fad50829c324b.png

8. 把一个文件多行连接成一行

9e0c93ea7cb75d9479ffc63423fa8d80.png

fe202432bd43dfbf83f672f310bea6ba.png

9. awk 中 gsub 函数的使用

gsub 函数是将正则表达式被匹配到的发生替换.

gsub(Regualr expression, subsitution string, target string);

aad582b1e23bfe268edb33632c336106.png

10. awk 截取指定多个域为一行

8e770d826e4b1e494c7ee85e4f141dd5.png

for ((i=1,n=`awk -F: 'NR==1 {print NF}' ./passwd`;i<=n;i++)); do awk -F: -v i=$i '{printf($i ":");} END{ print "\n"}' ./passwd ;done

# 最外层使用 for () do ;done 循环包裹

# for循环结构是 (i=1,n=`awk -F: 'NR==1 {print NF}' ./passwd`;i<=n;i++)

# 获取了 文件的列数, 然后根据列数, 设置 i 的值,

# 循环内是获取 该文件的第 i 列, 然后将该列 输出为1行

11. grep 或 egre 或 awk 过滤 两个或多个关键词

grep 'abc|def' file grep -E 'abc|def' file egrep 'abc|def' file awk '/ab|de/' file

cf843ceb2c82eba7d243ea942e166501.png

12. 使用 awk 编写生成以下结构文件程序

用 awk 生成下面结构文件(最后列是使用现在时间 格式为YYYMMDDHHMMSS) 各列值如下, 每增加以行增加1 , 共500w 行 1,1,0000000001,0000000001,0000000001,0000000001,0000000001,0000000001,2005100110101 2,2,0000000002,0000000002,0000000002,0000000002,0000000002,0000000002,2005100110101

使用 for 循环加 printf 格式化输出, 然后用 awk 內建函数 strftime生成时间

11373d3c8d7adda3b62d79addd994e0d.png

可以使用 system 函数调用系统命令

4f9a70284350cbc31330adc9e078427b.png

13. awk 用print 打印单引号

f3e0fdac46da75d03aa6fcf3ddb194fc.png

14. 把两个文件中相同的行合并成一行

7e210ce09db97b90a5c059ef235938c4.png

paste 命令 用于将多个文件按照队列进行合并. 选项:

-d : 用于指定间隔字符取代合并时用的跳格字符

-s 串列进行合并, 而非水平合并

END

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值