2018-04-17

> awk基础入门

* linux的一个命令,是一门计算机脚本语言。awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。

* awk基本命令

  ```

  awk '{print}' haha.txt //打印全部

  awk '{print $1}' haha.txt//打印第一行

  awk '{print $3}' haha.txt//打印第三行

  awk '{print $1"\t"$3}' haha.txt//打印第一行和第三行用制表符号隔开

  awk '{print $NF}' haha.txt //打印出最后一列

  awk '{print $(NF-1)}' haha.txt //打印出最后第二列

  ```

* record 横行 field 竖行 

  * NR 横行的数量

  * NF 竖行的数量

  ```

  [kiosk@foundation45 Desktop]$ awk '{print NR"\t" $1"\t"$3}' haha.txt //打印出行号

  ```

  tips:awk认为空格是将两个拼接起来,所以要想输出有空格的话,必须加逗号,awk的默认分隔符是空格,所以加逗号之后,输出会出现一个空格的效果。也可以连接制表符号等等。

* awk的查找功能

  * 查找数字

  ```

  查找第五列中数字是60的

  [kiosk@foundation45 Desktop]$ awk ' $5==60{print $0 }' haha.txt

  张三1     男 23 157 60

  张三17 男 20 155 60

  张三4 男 26 159 60

  张三43 男 23 151 60

  ```

  * 查找字符串

  ```

  //注意:字符串要加双引号,否则不能查找成功。

  [kiosk@foundation45 Desktop]$ awk ' $1=="张三17"{print $0 }' haha.txt

  张三17 男 20 155 60

  ```

* awk的内部变量

  | 变量      | 作用            |

  | -------- | -------------- |

  | NF      | 竖行            |

  | NR      | 横行            |

  | FS      | 默认输入分割符号      |

  | OFS      | 默认输出分割符号      |

  | FILENAME | 文件名            |

  | ENVIRON  | 支持队列中系统环境变量的使用 |

  | RS      | 控制记录分割符        |

  |          |                |

  ​

  * 改变默认分割符号。

  ```

  [kiosk@foundation45 Desktop]$ awk 'BEGIN{FS=","}{print $2,$1}'

  //把逗号作为默认分隔符。

  ```

  * 同时操作两个文件的时候,我们可能需要用文件名来区分,可以打印出filename。

  ```

  [kiosk@foundation45 Desktop]$ awk '{print FILENAME"\t" $2,$1}' haha.txt

  ```

  * 隐藏某一行信息不被输出

  ```

  [kiosk@foundation45 Desktop]$ awk '{$3="xxxx";print $0}' haha.txt

  ```

  ```

  输出效果:

  张三57 男 xxxx 154 59

  张三58 男 xxxx 152 52

  张三59 女 xxxx 154 56

  ```

* awk自定义变量和计算

  * 自定义变量计算

    * awk支持加减乘除运算(先做运算,再做字符串的拼接)

    ```

    [kiosk@foundation45 Desktop]$ awk '{a=2; b=2; print a b}'

    //enter键入

    22

    ^C

    [kiosk@foundation45 Desktop]$ awk '{a=2; b=2; print a+b}'

    4

    ^C     

    ```

* 正则表达式(Regular Expression)

  * ./abc/ abc三个字符连在一起的

    * "abc"

    * "xxabcxx'

    string.txt

    ```

    abc

    abcxx

    xxabch

    a b c

    adc

    ```

    ```

    [kiosk@foundation45 Desktop]$ awk '/abc/{print $0}' string.txt

    abc

    abcxx

    xxabch

    ```

  * ./a.c/ axc类型的

    * "abc"

    * "acc"

    * "adc"

    ```

    [kiosk@foundation45 Desktop]$ awk '/a.c/{print $0}' string.txt

    abc

    abcxx

    xxabch

    adc

    ```

  * 转译字符```\``` 用来匹配特殊字符的

    * .```/a\.c/``` 只匹配a.c的

  * ^ 和 $

    * /^abc/  匹配abc出现在最前面

    * /abc$/ abc必须出现在字符串的结尾

  * []

    * /a[xyz]c/ 匹配axc,ayc,azc这三个,其他的是不可以的。

    * /a[a-z]c/ 匹配a和c之间必须出西安一个小写字母。

    * /a[a-zA-Z]c/ 出现大小写字母都是可以的。

    * 写在[]里面的^表示不是的意思

      * /a【^a-z】c/ 不能出现a-z

  * ```*```和 +和?

    * /a*b/ a可以出现多次

    * /a+b/

    * /a?b/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的基于Transformer算法的代码示例,可以用来预测SNumber。 ```python import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import StandardScaler from sklearn.model_selection import train_test_split from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Dense, Dropout, LayerNormalization, MultiHeadAttention, TimeDistributed, concatenate # 加载数据 data = pd.read_csv('data.csv') X = data.drop(['SNumber'], axis='columns') y = data['SNumber'] # 标准化输入特征 scaler = StandardScaler() X = scaler.fit_transform(X) # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, shuffle=False) # 构建Transformer模型 def transformer_model(input_shape): inputs = Input(shape=input_shape) x = Dense(64, activation='relu')(inputs) x = LayerNormalization()(x) x = Dropout(0.2)(x) x = Dense(32, activation='relu')(x) x = LayerNormalization()(x) x = Dropout(0.2)(x) x = Dense(1)(x) model = Model(inputs=inputs, outputs=x) return model # 训练模型 model = transformer_model((X_train.shape[1],)) model.compile(optimizer='adam', loss='mean_squared_error') model.fit(X_train, y_train, epochs=100, batch_size=16, validation_data=(X_test, y_test)) # 预测结果 y_pred = model.predict(X_test) # 可视化预测结果 plt.plot(y_test.values, label='True') plt.plot(y_pred, label='Predicted') plt.legend() plt.show() ``` 需要注意的是,这只是一个简单的示例,实际上可能需要进行更多的特征工程和调整模型参数来获得更好的预测结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值