嗨,我只是尝试使用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个单词。任何帮助将不胜感激
$ 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)。
如果字段是制表符分隔的
sed 'h;s/[^[:blank:]]//g;s/[[:blank:]]\{3\}//;/^$/!d;x;s/\([^[:blank:]]*[[:blank:]]\)/\1\1\1/' infile