您好我正在尝试解决问题仅使用sed命令并且不使用管道。但我可以将sed命令的结果传递给文件或从文件中读取。 EX:
sed s/dog/cat/ >| tmp
or
sed s/dog/cat/ < tmp
无论如何我要说我有一个文件F1,其内容是:
Hello hi 123
if a equals b
you
one abc two three four
dany uri four 123
输出应为:
if if if a equals b
dany dany dany uri four 123
说明:程序必须只打印4个单词的行,打印时必须打印3行的第一个单词。
我尝试过这样的命令:
sed '/[^ ]*.[^ ]*.[^ ]*/s/[^ ]\+/& & &/' F1
或
sed 's/[^ ]\+/& & &/' F1
但我无法弄清楚我怎么能用sed计算出一行中只有4个单词。 任何帮助将不胜感激
答案 0 :(得分:4)
$ sed -En 's/^([^[:space:]]+)([[:space:]]+[^[:space:]]+){3}$/\1 \1 &/p' file
if if if a equals b
dany dany dany uri four 123
以上使用支持带有-E
选项的ERE的sed,例如GNU和OSX seds)。
答案 1 :(得分:1)
如果字段是分隔符
sed 'h;s/[^[:blank:]]//g;s/[[:blank:]]\{3\}//;/^$/!d;x;s/\([^[:blank:]]*[[:blank:]]\)/\1\1\1/' infile