我们如何使用'~|~'分隔符使用脚本命令拆分记录?
How can we use '~|~' delimiter to split the records using scripting command?
请建议如何拆分用 ~|~ 分隔符分隔的列。(文件:abc.dat)
a~|~1~|~x
b~|~1~|~y
c~|~2~|~z
我在 awk 命令下尝试,但输出计数为 0。
awk -F'~|~' ' == 1' ${file} | wc -l
使用您展示的示例,请尝试执行以下操作。我们不需要将 wc
命令与 awk
一起使用,它可以在 awk
本身内完成。
awk -F'~\|~' ' == 1{count++} END{print count}' "$file"
解释:设置字段分隔符为~|~
(此处转义|
)。然后检查第二个字段是否为 1
,然后将变量计数加 1。在这个程序的 END
块中打印它的值。
要将值保存到 shell 变量中,请使用:
var=$(awk -F'~\|~' ' == 1{count++} END{print count}' "$file")
您也可以使用 ~[|]~
作为 FS
值,因为在括号表达式中使用的管道字符总是匹配自身,管道字符:
counter=$(awk 'BEGIN{FS="~[|]~"} ==1{cnt++} END{print cnt}' file)
s='a~|~1~|~x
b~|~1~|~y
c~|~2~|~z'
counter=$(awk 'BEGIN{FS="~[|]~"} ==1{cnt++} END{print cnt}' <<< "$s")
echo $counter
# => 2
请建议如何拆分用 ~|~ 分隔符分隔的列。(文件:abc.dat)
a~|~1~|~x
b~|~1~|~y
c~|~2~|~z
我在 awk 命令下尝试,但输出计数为 0。
awk -F'~|~' ' == 1' ${file} | wc -l
使用您展示的示例,请尝试执行以下操作。我们不需要将 wc
命令与 awk
一起使用,它可以在 awk
本身内完成。
awk -F'~\|~' ' == 1{count++} END{print count}' "$file"
解释:设置字段分隔符为~|~
(此处转义|
)。然后检查第二个字段是否为 1
,然后将变量计数加 1。在这个程序的 END
块中打印它的值。
要将值保存到 shell 变量中,请使用:
var=$(awk -F'~\|~' ' == 1{count++} END{print count}' "$file")
您也可以使用 ~[|]~
作为 FS
值,因为在括号表达式中使用的管道字符总是匹配自身,管道字符:
counter=$(awk 'BEGIN{FS="~[|]~"} ==1{cnt++} END{print cnt}' file)
s='a~|~1~|~x
b~|~1~|~y
c~|~2~|~z'
counter=$(awk 'BEGIN{FS="~[|]~"} ==1{cnt++} END{print cnt}' <<< "$s")
echo $counter
# => 2