![为什么 awk sub 没有替换我的输入](https://linux22.com/image/1566876/%E4%B8%BA%E4%BB%80%E4%B9%88%20awk%20sub%20%E6%B2%A1%E6%9C%89%E6%9B%BF%E6%8D%A2%E6%88%91%E7%9A%84%E8%BE%93%E5%85%A5.png)
我一直在努力编写一个 awk 程序,该程序可以接收输入文件并仅在第二列中显示原始文件名和空格分隔的文件名。为什么以下命令不起作用?
echo -e "abc/123\ndef/456" | awk '{l=$1; sub("./*", "", l); print "mv " $1, $l}'
为了记录,上述输出
mv abc/123 abc/123
mv def/456 def/456
答案1
l
是保存替换文本$l
的变量。是列号由变量中存储的值引用l
。由于l
值不是以数字开头,awk 会将字符串视为数字“0”,因此您可以获得$0
当前记录。
你想要的是这个
print "mv", $1, l