Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 使用awk替换文件中的word_Unix_Awk - Fatal编程技术网

Unix 使用awk替换文件中的word

Unix 使用awk替换文件中的word,unix,awk,Unix,Awk,我有一个文件,其中有几行: a b c d 我想将cat此文件转换为awk命令以生成如下内容: letter is a letter is b letter is c letter is d 使用类似这样的方法: cat file.txt | awk 'letter is $1' 但它并没有按预期打印出来: $ cat raw.txt | awk 'this is $1' a b c d 不确定您是想要sed还是awk,但这是在awk中: $ awk '{print "letter is

我有一个文件,其中有几行:

a
b
c
d
我想将
cat
此文件转换为
awk
命令以生成如下内容:

letter is a
letter is b
letter is c
letter is d
使用类似这样的方法:

cat file.txt | awk 'letter is $1'
但它并没有按预期打印出来:

$ cat raw.txt | awk 'this is $1'
a
b
c
d

不确定您是想要sed还是awk,但这是在awk中:

$ awk '{print "letter is " $1}' file
letter is a
letter is b
letter is c
letter is d

不确定您是想要sed还是awk,但这是在awk中:

$ awk '{print "letter is " $1}' file
letter is a
letter is b
letter is c
letter is d

目前,您没有
{action}
块,因此您的条件计算两个空变量
this
is
,将它们与第一个字段
$1
连接,并检查结果是否为真(非空字符串)。是的,因此默认操作会打印每一行

听起来您想这样做:

awk '{ print "letter is", $1 }' raw.txt
尽管在这种情况下,您也可以使用sed:

sed 's/^/letter is /' raw.txt
此命令匹配每行的开头并添加字符串


请注意,我将文件作为参数传递,而不是将
cat
与管道一起使用。

目前,您没有
{action}
块,因此您的条件会计算两个空变量
this
is
,将它们与第一个字段
$1
连接,并检查结果是否为真(非空字符串)。它是,因此默认操作打印每行

听起来您想这样做:

awk '{ print "letter is", $1 }' raw.txt
尽管在这种情况下,您也可以使用sed:

sed 's/^/letter is /' raw.txt
此命令匹配每行的开头并添加字符串


请注意,我将文件作为参数传递,而不是将
cat
与管道一起使用。

问题是“使用sed替换文件中的单词”还是“使用awk打印文件中的行”?这是为了awk-为混淆道歉问题是哪一个,“使用sed替换文件中的单词”还是“使用awk打印文件中的行”?是为了awk-为混乱道歉