Linux 需要将下面的awk命令转换为sed

Linux 需要将下面的awk命令转换为sed,linux,unix,sed,awk,Linux,Unix,Sed,Awk,我需要将下面的awk命令转换为sed, awk-F',''$2~/^*[0-9]*(\.[0-9]+)?“*$/{sub(/“/,”,'',$2);打印$2}' 下面是我的输入文件: sample.txt: 3“,3” 6位,6位 7'4英寸到10'3-1/2英寸,7'4英寸到10'3-1/2英寸 4.8“,4.8” 可从99英寸调整至111英寸最大值148,可从99英寸调整至111英寸最大值148 我需要如下输出, output.txt: 3”,3 6位, 7'4英寸到10'3-1/2英寸,

我需要将下面的awk命令转换为sed,
awk-F',''$2~/^*[0-9]*(\.[0-9]+)?“*$/{sub(/“/,”,'',$2);打印$2}'

下面是我的输入文件:

sample.txt:

3“,3”

6位,6位

7'4英寸到10'3-1/2英寸,7'4英寸到10'3-1/2英寸

4.8“,4.8”

可从99英寸调整至111英寸最大值148,可从99英寸调整至111英寸最大值148

我需要如下输出,

output.txt:

3”,3

6位,

7'4英寸到10'3-1/2英寸,

4.8”,4.8

可从99英寸调整到111英寸-最大值148,

因此,基本上我需要打印“符号”的数字值,其他非数字文本需要替换为空行,awk命令的问题是2、3和5行被删除。

这对我有效:

sed -e 's/^\([0-9]\+\(\.[0-9]\+\)*\)"$/\1/g' \
-e '/^\([0-9]\+\(\.[0-9]\+\)*\)$/! s/^.*$//g' sample.txt

正如我所评论的,awk one liner对您的输入文件没有意义。但是,您可以尝试以下sed行:

sed -r '/^[0-9.]+"$/{s/"$//;n;};s/.*//' file
这适用于您的输入文件

kent$  cat file
3"
6-position
7' 4" to 10' 3-1/2"
4.8"
Adjustable from 99" to 111" - max 148    
kent$  sed -r '/^[0-9.]+"$/{s/"$//;n;};s/.*//' file
3


4.8
(here, the last line is empty too.)
编辑

移除
-r
选项,并调整sed以使用新的输入/输出:

sed  's/^\([^,]*,\)\([0-9.]*\)".*$/\1\2/;t;s/^\([^,]*,\).*/\1/' file
这一行与您的新输入示例一起使用:

kent$  cat file
3",3"
6-position,6-position
7' 4" to 10' 3-1/2",7' 4" to 10' 3-1/2"
4.8",4.8"
Adjustable from 99" to 111" - max 148,Adjustable from 99" to 111" - max 148

kent$  sed  's/^\([^,]*,\)\([0-9.]*\)".*$/\1\2/;t;s/^\([^,]*,\).*/\1/' file
3",3
6-position,
7' 4" to 10' 3-1/2",
4.8",4.8
Adjustable from 99" to 111" - max 148,

您可以同时使用awk和sed来执行此操作。 由于我的手机上没有Linux(shell),我将尝试使用一个sed解决方案:

sed -e 's/^([0-9.]+)"$|.*/\1/g' < file
sed-e的/^([0-9.]+)“$|.*/\1/g”

这项工作应该做得很好,你的awk代码中有
-F'、'
,还有
$2
。但是我在你的输入文件中找不到任何逗号。您是否复制了错误的awk行?您有完美的
sed
解决方案作为您先前问题的答案,这完全相同…不@AdrianFrühwirth,sed命令不起作用Hi@Ravoori,如何对特定列使用此命令?Hi@Kent我没有在输入文件中添加该命令。但是我希望在第2列上执行sed,而我的unix版本不接受sed-r@GanzRicanz请参阅编辑,它应该适用于您的示例。我只得到一个空文件。您从未提到您有哪个sed,只需说“不起作用”。sed线在那里。当我用你的输入文件执行那一行时,我复制了我的屏幕。它与我的gnu sed(不带-r)一起工作。如果您有其他sed实现,则可以。您可以阅读我的sed行,并调整它以适合您的sed。你已经通过阅读我的代码看到了我的想法,你已经阅读了我的代码,不是吗?我想我不能再帮你了。很抱歉