使用grep提取子字符串并附加到行的前面

使用grep提取子字符串并附加到行的前面,grep,Grep,给定一个有许多行的.txt文档,我如何提取这行的一部分并将提取的位附加到行的前面,我从中提取它 例如: sometext("txt_to_be_ext", some_more_text) 进入: 使用gawk的match功能: awk '{match($0,/.*("[^"]+").*/,a);$0=a[1]"," $0}1' input_file "txt_to_be_ext",sometext("txt_to_be_ext", some_more_text) 使用gawk的match功能

给定一个有许多行的
.txt
文档,我如何提取这行的一部分并将提取的位附加到行的前面,我从中提取它

例如:

sometext("txt_to_be_ext", some_more_text)
进入:


使用
gawk
match
功能:

awk '{match($0,/.*("[^"]+").*/,a);$0=a[1]"," $0}1' input_file
"txt_to_be_ext",sometext("txt_to_be_ext", some_more_text)

使用
gawk
match
功能:

awk '{match($0,/.*("[^"]+").*/,a);$0=a[1]"," $0}1' input_file
"txt_to_be_ext",sometext("txt_to_be_ext", some_more_text)
简要说明

  • 用括号括住
    “txt\u to\u be\u ext”
    ,其中
    \1
    表示相应的匹配
  • &
    将引用
    sometext.*(\(“*”\).
简要说明

  • 用括号括住
    “txt\u to\u be\u ext”
    ,其中
    \1
    表示相应的匹配
  • &
    将引用
    sometext.*(\(“*”\).

如果我在匹配的字符串中有两个
元素会怎么样?这个方法会给我最后一个元素,将
a[1]
更改为
a[0]
会在前面追加
一些更多的文本
将把
测试放在前面,但是如果我想得到
文本到文本,怎么办?用示例输入添加预期输出输入:
一些文本(“文本到文本”,一些更多文本,“测试”)
预期输出:
文本到文本,一些文本(“文本到文本”,一些更多文本,“测试”)
使用
awk'{match($0,/+.[],*/,a);$0=a[1],“$0}1'
我是个白痴,在预期的输出中输入了一个错误。对不起,我已经更新了我的评论。如果我匹配的字符串中有两个
元素呢?这个方法会给我最后一个,并将
a[1]
更改为
a[0]
更多的文本添加到前面。我正在讨论的示例:
一些文本(“txt\u to\u be\u ext”,更多的文本,“test”)
会将
测试
放在前面,但是如果我想进入
txt\u to\u be\u ext
,用示例输入添加预期的输出:
一些文本(“txt\u to\u be\u ext”,更多的文本,“test”)
预期输出:
“txt_to_be_ext”,sometext(“txt_to_be_ext”,somemore_text,“test”)
使用
awk'{match($0,/.*([^“]+”),*/,a);$0=a[1],“$0}1”
我是个白痴,在预期输出中输入了一个错误。对不起,我已经更新了我的评论。
sed 's/sometext.*(\(".*"\).*/\1,&/' input_file