1

我有一些需要从 awk 字符串中删除的正则表达式控制字符。如果可能的话,如何在不使用原始字符串的第一个、最后一个索引的情况下将“[mystring]”替换为“mystring”?

4

5 回答 5

3

使用您将在哪里执行替换的gsub()函数,您可能希望使用在整行或第 i字段上执行替换。gsub(/[][]/,"",s)s$0$i

$ echo '[mystring]' | awk '{gsub(/[][]/,"",$0)}1'
mystring    
于 2013-05-09T15:15:03.497 回答
3

我假设您想知道如何编写sub/gsub函数:

kent$  echo '[string]'|awk '{gsub(/[][]/,"")}1'
string
于 2013-05-09T15:16:33.980 回答
1

一个简单的 sed 可以完成这项工作:

echo "[mystring]" | sed 's/[][]//g'

输出:

我的字符串

于 2013-05-09T15:17:17.983 回答
0

尝试使用

awk '{  gsub( "\[", "" );gsub( "\]", "" );  print  }'

来源:http ://www.linuxquestions.org/questions/programming-9/awk-delete-%5B-903132/

于 2013-05-09T15:16:14.497 回答
0

假设您不想删除输入中的所有“[”和“]”,而是只想在它们出现在字符串“mystring”周围时删除它们,使用 GNU awk(对于 gensub() ) 它的:

$ echo "[before] [mystring] [after]" |
  gawk '{$0=gensub(/(.*)\[(mystring)\]/,"\\1\\2","")}1'
[before] mystring [after]
于 2013-05-09T15:25:53.827 回答