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=","
我有 [一个文本文件][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=","