从具有不同长度/样式的字符串中获取文本

时间:2018-08-10 14:50:59

标签: awk sed fetch extract cut

我想问一问如何从TextN之前的长度/样式不同的字符串中获取 TextN 。剪切,sed和awk?任何例子,我都感激。

2018/08/09-20:45:50.671483-06359-06359-433191088669655042-004- TextN
2018/08/09-20:45:50.668677-06359-06359-002-006-  TextN
2018/08/09-20:45:50.668677-063-063-002-006-  TextN

谢谢。

对不起,**是零件代码标签。

2 个答案:

答案 0 :(得分:1)

如果文本用双星包裹,并且在其他地方不存在...

$ awk -F'**' '{print $2}' file

TextN
TextN
TextN

否则请发布一个更具代表性的示例。

还有sed

$ sed -E 's/.*\*\*([^*]+)\*\*.*/\1/' file

如果textN中没有空格,并且它是最后一个用空格分隔的字段...

$ awk '{print $NF}' file

因为字符,空格具有特殊含义,所以您必须仔细选择示例输入...

答案 1 :(得分:0)

要使用awk完成@karakfa的sed示例,请执行以下操作: sed -i -E "s/.*\*\*([a-zA-Z]+)\*\*/\1/" <your-text-file>

仅当您的TextN[a-zA-Z]匹配时,上一个示例才有效。您还可以使用更复杂的功能或添加其他字符。如果您实际上不知道会有什么字符,请执行以下操作: sed -i -E "s/.*\*\*(.+)\*\*/\1/" <your-text-file>

如果您的字符串不在文件中,而是环境变量或只是变量: echo $line | sed -E "s/.*\*\*(.+)\*\*/\1/"