linux - 在 Linux 上使用 AWK 编写文件
问题描述
我有一个文件有几行,其中一行是
-xxxxxxxx()xxxxxxxx
我想将此行的内容添加到一个新文件中
我这样做了:
awk ' /^-/ {system("echo" $0 ">" "newline.txt")} '
但这不起作用,它返回一个错误,上面写着:
Unnexpected token '('
我相信这是由于 () 存在于该行中。如何克服这个问题?
解决方案
您需要添加适当的空格!
对于您的错误awk ' /^-/ {system("echo" $0 ">" "newline.txt")} '
,shell 命令本质上是echo-xxxxxxxx()xxxxxxxx>newline.txt
,这肯定是行不通的。您需要在awk
字符串中构造一个正确的 shell 命令,并遵守awk
s 字符串连接规则,即您的预期脚本应该如下所示(它仍然被破坏,因为$0
在生成的 shell 命令中没有正确引用):
awk '/^-/ { system("echo " $0 " > newline.txt") }'
但是,如果您真的只需要echo $0
放入一个文件,您可以简单地执行以下操作:
awk '/^-/ { print $0 > "newline.txt" }'
或者更简单
awk '/^-/' > newline.txt
它本质上将默认操作应用于所有匹配的记录/^-/
,默认操作是 to print
,它是整齐打印当前记录的缩写,即此脚本只是过滤掉所需的记录。> newline.txt
外部的重定向awk
只是将其放入文件中。
推荐阅读
- r - 识别和计算法术(每组中的独特事件)
- android - 如何在 Android Studio 中添加带有函数的单独文件
- c# - 连接到 docker 容器中的 SQL Server 时出错
- material-ui - 带有粘性表头的可滚动表中的复选框重叠
- c# - 当请求模型实际上无效时,ModelState 是有效的
- python - 编译时如何捕获更改的.c文件列表?
- c - 通过 execve 从子级调用的排序不会自然终止
- java - 如何将 CSV 中的数据存储到 Java 中的数组中?
- python - 用户输入预期的浮点数,但变成了字符串 Python
- android - 如何使用 Room Db 返回 Rx Single 交易?