Linux Sed,Awk用于组合两个cut语句的输出

Linux Sed,Awk用于组合两个cut语句的输出,linux,shell,awk,sed,Linux,Shell,Awk,Sed,我正在尝试将以下输出合并到一个命令中。问题是,我试图抓住的领域是相反的顺序。我被告知cut不支持“反向”选项,并为此目的使用AWK,但它最终没有达到我的目的。我试图根据/dev/块获取ls-l的输出,以返回分区,并根据命令的输出为每个输出行自动构建ddif=/of= 我尝试将输出管道化到awk: cut -d' ' -f23,25 ... | awk '{print $2,$1}' 然而,结果是当使用sed输入前缀和后缀时,顺序不正确 我构建了下面的两条语句,它们分别返回预期的输出,只是寻找

我正在尝试将以下输出合并到一个命令中。问题是,我试图抓住的领域是相反的顺序。我被告知cut不支持“反向”选项,并为此目的使用AWK,但它最终没有达到我的目的。我试图根据/dev/块获取ls-l的输出,以返回分区,并根据命令的输出为每个输出行自动构建ddif=/of=

我尝试将输出管道化到awk:

cut -d' ' -f23,25 ... | awk '{print $2,$1}' 
然而,结果是当使用sed输入前缀和后缀时,顺序不正确

我构建了下面的两条语句,它们分别返回预期的输出,只是寻找使用sed/awk以最有效的方式组合这两条语句的“正确”方法

ls -l /dev/block/platform/msm_sdcc.1/by-name/ | cut -d' ' -f 25 | sed "s/^/dd if=/"


ls -l /dev/block/platform/msm_sdcc.1/by-name/ | cut -d' ' -f 23 | sed "s/.*/of=\/external_sd\/&.dsk/"
任何协助都将不胜感激


谢谢。

如果您已经在使用
awk
,我想您不需要
cut
sed
。你也许可以做如下的事情,尽管我必须相信你的字段号

ls -l /dev/block/platform/msm_sdcc.1/by-name | awk '{print "dd if=/"$25 " of=/" $23 ".dsk"}'

awk将在所有空格上进行拆分,而不仅仅是空格字符,因此字段可能会发生一些移位,尽管它可能更可靠。

显示ls-l/dev/block/platform/msm_sdcc.1/by name/的示例输出以及该示例输入所需的输出。谢谢Eric,awk'{print“dd if=/“$8”of=/“$6.dsk”}他最终完成了这项工作,只需要解释一下空格和空格的区别。再次感谢!