为什么这个 sed 命令不换行
Why doesn't this sed command put a newline
我有一个文件,ciao.py 其中只有一行:print("ciao")
我想这样做:我想通过管道流来做到这一点,另外,如果我这样做 cat ciao.py | sed 's/.*/&\n&/'
它会起作用,但我想在两个独立的部分中做到这一点,模拟以下情况我想打印它,然后将其传递给其他命令。
如果我这样做:
cat ciao.py | sed 's/.*/&\n/' |tee >(xargs echo) | xargs echo
它不起作用。它在同一行打印 print("ciao") print("ciao")
。我不明白为什么,因为我将 \n 与 sed 放在一起。
我猜 print cia
在同一行出现了两次,因为 xargs
使用多个字符串调用 echo
因为 xargs
调用了你提供给它的命令默认情况下一次输入多组。
这是你想要做的吗?
$ cat ciao.py | sed 's/.*/&\n/' |tee >(xargs -n 1 echo) | xargs -n 1 echo
print(ciao)
print(ciao)
或:
$ cat ciao.py | sed 's/.*/&\n/' |tee >(cat) | xargs -n 1 echo
print(ciao)
print(ciao)
当然,有更好的方法从输入中获取输出,例如:
$ sed 'p' ciao.py
print("ciao")
print("ciao")
我有一个文件,ciao.py 其中只有一行:print("ciao")
我想这样做:我想通过管道流来做到这一点,另外,如果我这样做 cat ciao.py | sed 's/.*/&\n&/'
它会起作用,但我想在两个独立的部分中做到这一点,模拟以下情况我想打印它,然后将其传递给其他命令。
如果我这样做:
cat ciao.py | sed 's/.*/&\n/' |tee >(xargs echo) | xargs echo
它不起作用。它在同一行打印 print("ciao") print("ciao")
。我不明白为什么,因为我将 \n 与 sed 放在一起。
我猜 print cia
在同一行出现了两次,因为 xargs
使用多个字符串调用 echo
因为 xargs
调用了你提供给它的命令默认情况下一次输入多组。
这是你想要做的吗?
$ cat ciao.py | sed 's/.*/&\n/' |tee >(xargs -n 1 echo) | xargs -n 1 echo
print(ciao)
print(ciao)
或:
$ cat ciao.py | sed 's/.*/&\n/' |tee >(cat) | xargs -n 1 echo
print(ciao)
print(ciao)
当然,有更好的方法从输入中获取输出,例如:
$ sed 'p' ciao.py
print("ciao")
print("ciao")