Select 第一列和最后一列使用正则表达式或 linux 命令

Select first and last column using regex or linux command

我有 [一个文本文件][1],看起来像这样...

  ("oo" (set CANDRA-E-O 0) "ऊ") 
  ("o" (set CANDRA-E-O ?ऑ) "ओ")
  ("oa" "ऑ")
  ("au" "औ")

我需要提取第一列和最后一列,例如:

"oo", "ऊ"
"o", "ओ"
"oa", "ऑ"
"au", "औ"

我成功地提取了第一列。但不确定如何 select 第二列。

\ {2}\(\".+\"\ 

根据您显示的 samples/attempts,请尝试执行 awk 命令。在 GNU awk.

中编写和测试
awk -v FPAT='"[^"]*"' '{for(i=1;i<=NF;i++){printf("%s%s",$i,i==NF?ORS:OFS)}}' Input_file

解释: 简单的解释就是,将FPAT设置为'"[^"]*"',这意味着将字段分隔符设置为正则表达式形式,从 " 到下一次 " 出现。然后在主程序中遍历每一行的所有字段并打印它们,当它的最后一个字段行然后打印新行时打印空格(将所有一行值放入一行)。

有了这个awk解决方案:

awk -v OFS="," '{sub(/^\(/,"",);sub(/\)$/,"",$NF);print , $NF}' file
"oo","ऊ"
"o","ओ"
"oa","ऑ"
"au","औ"
  • 对于第一个 sub(),我们删除了第一个字段的括号 (
  • 最后一个字段的最后一个括号 ) 同上第二个 sub()
  • 我们打印以逗号分隔的两个字段:OFS=","