为什么我的awk命令将字符串添加到开头,而不是最后追加



我试图在文件的每一行末尾放一个字符:

a
aa
aaa
aah
aahed
aahing
aahs
aal
aalii
aaliis

使用sed/awk:

awk '{print  $0 "A"}' words_alpha.txt > words_alpha_hyp.txt
sed -i 's/$/A/' words_alpha.txt > words_alpha_hyp.txt 

我总是用字符"a"作为前缀:

A
A
Aa
Ah
Ahed
Ahing
Ahs
Al
Alii
Aliis
Als
Am
Ani
Ardvark
Ardvarks

有趣的是,如果我尝试在字符"a"之前"\n":

awk '{print $0 "n a"}' words_alpha.txt > words_alpha_hyp.txt
a
a
aa
a
aaa
a
aah
a
aahed
a
aahing
a
aahs
a
aal
a

我做它应该做的事…我不明白…

您的输入文件很可能有DOS CRLF行终止符,即n不是rn。修改您的记录分隔符以处理这些行,需要GNUawk才能使用多字符记录分隔符

awk -v RS="rn" '{ $0 = $0 "a" }1' file

或者通过执行dos2unix file将文件转换为*nix行结尾的n,然后再次运行原始命令。

相关内容

  • 没有找到相关文章

最新更新