Shell 如何创建一个新文件,其中每一行都包含一些文本和带引号的行号/步骤号?
我想在创建一个新文件时使用循环,其中每一行都是通过一个/单个步骤创建的:一些文本,然后引用步骤编号,然后是其他内容。我从这段代码开始,但它不起作用:Shell 如何创建一个新文件,其中每一行都包含一些文本和带引号的行号/步骤号?,shell,unix,command-line,awk,Shell,Unix,Command Line,Awk,我想在创建一个新文件时使用循环,其中每一行都是通过一个/单个步骤创建的:一些文本,然后引用步骤编号,然后是其他内容。我从这段代码开始,但它不起作用: gawk ' { for (i = 1; i <= 1000; i++) print "begin\""i"\"text"i"end" # how to print a line break? >> "path/to/output.txt" }' 请帮助解决此问题。代码需要放在开始块中:
gawk '
{
for (i = 1; i <= 1000; i++)
print "begin\""i"\"text"i"end" # how to print a line break?
>> "path/to/output.txt"
}'
请帮助解决此问题。代码需要放在
开始
块中:
gawk 'BEGIN {
for (i = 1; i <= 1000; i++)
print "begin\""i"\"text"i"end" >> "path/to/output.txt"
}'
gawk'开始{
对于(i=1;i>“path/to/output.txt”
}'
它不工作?它是否显示任何语法错误?或者根本不工作,如果是,当前输出是什么。gawk程序冻结,没有输出,因此我必须在第一个引号之后和第一个大括号之前关闭appPutBEGIN
。awk
需要一个输入文件,而您没有提供该文件,它会再次运行您的命令但是,在读取任何输入之前,它运行一个BEGIN
块awk'BEGIN{…}
或者,执行seq 1 1000 | awk'{print“Hello”,$1}“
严格来说,这不是真的。Awk读取它的标准输入,因此如果您不向它提供任何输入,它将等待您键入某些内容(因此看起来挂起)@tripleee:我不明白。上面的代码给出了所需的输出文件,但没有指定任何输入文件。你测试过答案中发布的代码吗?它是有效的,但断言代码需要在BEGIN
块中是不正确的。有许多解决方法,其中许多方法比这个更容易发现——不使用对于shell可以做的事情,Awk是相当明显的。我真的不理解向下投票。我问了关于使用指定工具(Awk)解决特定问题的问题,我找到了一个有效的答案。事实上,我不熟悉Unix shell,也不知道什么工具更适合这种情况。您的代码还可以,但您应该使用
而不是>
进行输出重定向,因为您希望创建一个新文件,而不是附加到现有文件,或者更好的是将其作为文件运行wk'BEGIN{for(i=1;i
gawk 'BEGIN {
for (i = 1; i <= 1000; i++)
print "begin\""i"\"text"i"end" >> "path/to/output.txt"
}'