![通过将输入文件作为参数来编写 AWK 脚本](https://linux22.com/image/138445/%E9%80%9A%E8%BF%87%E5%B0%86%E8%BE%93%E5%85%A5%E6%96%87%E4%BB%B6%E4%BD%9C%E4%B8%BA%E5%8F%82%E6%95%B0%E6%9D%A5%E7%BC%96%E5%86%99%20AWK%20%E8%84%9A%E6%9C%AC.png)
我是 Linux 新手,所以这可能是一个相对简单的任务,但我的研究失败了。我想写一个awk 脚本它应该迭代一个每行只有一个单词的输入文件并将其分配给一个变量,并且我必须对其进行一些字符串操作。我对如何获取每行上的单词(通过引用终端中输入的输入文件)并将其分配给变量感到非常困惑。
答案1
如果每行都有一个单词,awk
则将该单词放入$1
(“第一个字段”)。然后,您可以从那里提取它并将其放入变量中(如果您愿意的话)var = $1
。无论如何,您可以通过操作$1
(或者var
,如果您将值分配给该变量)来执行您希望的任何字符串操作。
例如,假设每个单词看起来像word=otherthing
并且我们只想输出otherthing
:
awk '{ split($1, a, "="); print a[2] }' infile
或者更短,
awk -F '=' '{ print $2 }' infile
$2
是每行的第二个字段,-F '='
我们知道awk
这些字段是由 分隔的=
。
你没有提到你需要做什么,所以我不会举更多例子。
您还可以将其编写为用户可以直接调用的脚本:
#!/usr/bin/awk -f
BEGIN { FS = "=" }
{ print $2 }
这将保存在一个文本文件中,使其可执行(使用chmod +x script.awk
),然后用户可以使用
./script.awk infile
...假设#!
-line 指向您的awk
二进制文件。