我想从文件中提取第一行,读入变量并在之后使用单个命令删除。我知道sed
可以读取第一行如下:
sed '1q' file.txt
或删除它如下:
sed '1q;d' file.txt
但我可以用一个命令以某种方式做到这两点吗? 这样做的原因是多个进程将读取文件的第一行,并且我希望最小化它们获得相同行的机会。
答案 0 :(得分:1)
除非你阅读了联机帮助页,并且有Gnu-sed:
echo -e {1..3}"\n" > input
cat input
1
2
3
sed -n '1p;2,$ Woutput' input
1
cat output
2
3
说明:
sed -n '1p;2,$ Woutput' input
从手册页gnu sed:
w filename
Write the current pattern space to filename.
W filename
Write the first line of the current pattern space to filename. This is a GNU extension.
然而,阅读和试验需要更长的时间,而不是在一个完整的办公套件中打开文件并手动删除该行,或者调用文本到语音框架并对其进行培训,以完成工作。
如果以posix样式调用它不起作用:
sed -n --posix '1p;2,$ Woutput' input
你仍然很难将输出重命名为输入。
我没有尝试写入输入,因为这可能会损坏我精心设计的输入文件 - 请自担风险:
sed -n '1p;2,$ Winput' input
但是,您可以设置文件系统通知作业,该作业始终将新创建的输出文件重命名为再次输入。但是我担心你不能在sed命令中做到这一点。除了...... (待续)