Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/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
Unix 需要从行中提取特定文本_Unix_Awk_Sed - Fatal编程技术网

Unix 需要从行中提取特定文本

Unix 需要从行中提取特定文本,unix,awk,sed,Unix,Awk,Sed,我需要从下面提到的行中提取特定变量,我尝试使用sed提取变量,但我不确定缺少ing_month变量的原因 Script: echo "ing_year=2016,ing_month=03,ing_day=11" | sed 's/=.*,/,/g' | sed 's/=.*//g' 所需输出: 年、月、日 请帮助我理解,或者如果有任何优化命令帮助我。正则表达式将始终尽可能匹配。如果这不是你想要的,那就减少匹配。常用的排列方式是排除分隔符 sed 's/=[^=,]*//g' <<

我需要从下面提到的行中提取特定变量,我尝试使用sed提取变量,但我不确定缺少ing_month变量的原因

Script:

 echo "ing_year=2016,ing_month=03,ing_day=11" | sed 's/=.*,/,/g' | sed 's/=.*//g'
所需输出:

年、月、日


请帮助我理解,或者如果有任何优化命令帮助我。

正则表达式将始终尽可能匹配。如果这不是你想要的,那就减少匹配。常用的排列方式是排除分隔符

sed 's/=[^=,]*//g' <<<'ing_year=2016,ing_month=03,ing_day=11'

(并非所有的
sed
方言都像多个
-e
选项。如果这不符合要求,请参阅手册页了解详细信息。)

正则表达式将始终尽可能匹配。如果这不是你想要的,那就减少匹配。常用的排列方式是排除分隔符

sed 's/=[^=,]*//g' <<<'ing_year=2016,ing_month=03,ing_day=11'
(并非所有的
sed
方言都像多个
-e
选项。如果这不符合要求,请参阅手册页了解详细信息。)

给你:

$ echo "ing_year=2016,ing_month=03,ing_day=11" | sed -r 's/([^=]+)=([^,]*)/\1/g'
ing_year,ing_month,ing_day
断开数据并全局应用。

给您:

$ echo "ing_year=2016,ing_month=03,ing_day=11" | sed -r 's/([^=]+)=([^,]*)/\1/g'
ing_year,ing_month,ing_day

断开数据并全局应用。

awk
救援

$ echo "ing_year=2016,ing_month=03,ing_day=11" | 
  awk -F'[=,]' -v OFS=, '{print $1,$3,$5; print $2,$4,$6}'

ing_year,ing_month,ing_day
2016,03,11

这将在两个单独的行中提取键和值,删除不需要的打印语句。

awk
拯救

$ echo "ing_year=2016,ing_month=03,ing_day=11" | 
  awk -F'[=,]' -v OFS=, '{print $1,$3,$5; print $2,$4,$6}'

ing_year,ing_month,ing_day
2016,03,11

这将在两个单独的行中提取键和值,删除您不需要的print语句。

起初我很困惑,认为OP想要每个变量的值,但从编写方式来看,似乎他/她想要的是变量名。我使用的是Windows7,但我在bashshell中键入了您的第一行,bashshell是我git环境的一部分。它给出了和你得到的相同的结果线。这就是OP所说的他/她想要的。QED(对你来说也是一点。)起初我很困惑,认为OP想要每个变量的值,但从它的编写方式来看,似乎他/她想要的是变量名。我使用的是Windows7,但我在bashshell中键入了您的第一行,bashshell是我git环境的一部分。它给出了和你得到的相同的结果线。这就是OP所说的他/她想要的。QED(对你来说也是一个要点。)