在Unix中,假设一个文件包含5个字段&数据如:
"112233"|"Roshan"|"25"|" FAX 022 3987789 \| TEL 77766288892 \| abc "|"Male"
需要提取第4个字段。使用下面的
column_value=`echo $line | cut -f4 -d'|'`
只有我们才能获得" FAX 022 3987789 \
但需要" FAX 022 3987789 \| TEL 77766288892 \| abc "
作为第4列值。
答案 0 :(得分:1)
cut
不是作业的正确工具。
您可以使用GNU Awk with FPAT来定义记录中每个字段的外观。您可以将FPAT
写为正则表达式常量,在这种情况下,下面的内容应该可以正常工作。
FPAT = "(\"[^\"]+\")"
在Awk
命令中使用它,
line='"112233"|"Roshan"|"25"|" FAX 022 3987789 \| TEL 77766288892 \| abc "|"Male"'
awk '
BEGIN {
FPAT = "(\"[^\"]+\")"
}{print $4}' <<<"$line"
生成输出
" FAX 022 3987789 \| TEL 77766288892 \| abc "
答案 1 :(得分:0)
您可以添加以下两个额外字段
echo $line | cut -f 4,5,6 -d\|
或者您可以使用sed替换&#34; |&#34;带有不同字符的分隔符(例如制表符)
echo $line | sed s/\"\|\"/\t/g | cut -f 4