Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 我们如何使用'~|~';使用脚本命令拆分记录的分隔符?_Shell_Awk_Delimiter_Script - Fatal编程技术网

Shell 我们如何使用'~|~';使用脚本命令拆分记录的分隔符?

Shell 我们如何使用'~|~';使用脚本命令拆分记录的分隔符?,shell,awk,delimiter,script,Shell,Awk,Delimiter,Script,请建议如何拆分用分隔符分隔的列。(文件:abc.dat) 我正在尝试低于awk命令,但得到输出0计数 awk -F'~|~' '$2 == 1' ${file} | wc -l 有了您展示的样品,请尝试以下内容。我们不需要将wc命令与awk一起使用,它可以在awk本身内完成 awk -F'~\\|~' '$2 == 1{count++} END{print count}' "$file" 说明:将字段分隔符设置为~(此处转义)。然后检查第二个字段是否为1,然后用1递增变量

请建议如何拆分用分隔符分隔的列。(文件:abc.dat)

我正在尝试低于awk命令,但得到输出0计数

awk -F'~|~' '$2 == 1' ${file} | wc -l

有了您展示的样品,请尝试以下内容。我们不需要将
wc
命令与
awk
一起使用,它可以在
awk
本身内完成

awk -F'~\\|~' '$2 == 1{count++} END{print count}' "$file"
说明:将字段分隔符设置为
~
(此处转义
)。然后检查第二个字段是否为
1
,然后用1递增变量计数。在该程序的
END
块中,打印其值

要将值保存到shell变量中,请使用以下命令:

var=$(awk -F'~\\|~' '$2 == 1{count++} END{print count}' "$file")

有了您展示的样品,请尝试以下内容。我们不需要将
wc
命令与
awk
一起使用,它可以在
awk
本身内完成

awk -F'~\\|~' '$2 == 1{count++} END{print count}' "$file"
说明:将字段分隔符设置为
~
(此处转义
)。然后检查第二个字段是否为
1
,然后用1递增变量计数。在该程序的
END
块中,打印其值

要将值保存到shell变量中,请使用以下命令:

var=$(awk -F'~\\|~' '$2 == 1{count++} END{print count}' "$file")

您还可以将
~[|]~
用作
FS
值,因为括号表达式中使用的管道字符始终与自身匹配,管道字符:

counter=$(awk'BEGIN{FS=“~[|]~”}$2==1{cnt++}END{print cnt}文件)
见:

s='a~ | ~1~ | ~x
b~ | ~1~ | ~y
c~ | ~2~ | ~z'

counter=$(awk'BEGIN{FS=“~[|]~”}$2==1{cnt++}END{print cnt}'您也可以使用
~[|]~
作为
FS
值,因为括号表达式中使用的管道字符始终与其自身匹配,管道字符:

counter=$(awk'BEGIN{FS=“~[|]~”}$2==1{cnt++}END{print cnt}文件)
见:

s='a~ | ~1~ | ~x
b~ | ~1~ | ~y
c~ | ~2~ | ~z'

counter=$(awk'BEGIN{FS=“~[|]~”}$2==1{cnt++}END{print cnt}感谢您的快速响应,工作如期。您能建议我们如何使用您的解决方案将计数存储到变量中。@R\u Kalavadiya,使用类似:
var=$(awk-F'\\\\\~'$2==1{count count++}END{print count}'file)
应该是很好的IMHO。为什么需要``FS for awk?@user1934428,要使它像文字字符一样对待它,请看一次:
awk-F'~| ~'''{for(i=1;i@User123,是的,当我们用
"
然后我们需要像
\\\\\\\\\\\\\\\\\
一样使用
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
我们也需要逃逸,因为为了让它理解它的字面特征,以及我们正在谈论的
\\\\\\
,这就是为什么专家建议使用
\\\\\\\\\\\\\\\
单引号,而不是双引号,干杯。谢谢您的快速回复,工作如期。您能建议我们如何使用您的解决方案将计数存储到变量中吗?@R\u Kalavadiya,使用like:
var=$(awk-F'\\\\\\\\\\\\\\\\\\\\''$2==1{count++}END{print count}'''$file”)
应该是很好的IMHO。为什么有必要使用'\`FS for awk?@user1934428将其视为文字字符,请参阅一次:
awk-F'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'''(i=1;i@User123,是的,当我们用
然后我们需要使用类似
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/code>的方法,我们也需要使用
\\\\\\\\\\\\\\\\\\\\
以及
\\\\\\\\\\\\\\\\\\\\\\\\\\\
的方法,因为要让它理解我们所说的文字特征,
这就是为什么专家建议使用单。