小编Ken*_*ram的帖子

防止awk删除变量中的“\”(反斜杠)

我有这行 shell 代码:

ls -1 *.mp3| awk -v here="$(cygpath -w $PWD)" -v source="$source" '{print "File Name: "$0"\n"here"\n"source}'
Run Code Online (Sandbox Code Playgroud)

不幸的是它输出:

File Name: Data 00053.mp3
C:UsersathenaWorkProject_10.MBT
Source: Converted from RAW
Run Code Online (Sandbox Code Playgroud)

这条线C:UsersathenaWorkProject_10.MBT 应该是C:\Users\athena\Work\Project_10\00.MBT

我现在迷路了,有很多东西要在这里学习。

bash awk quoting variable

4
推荐指数
1
解决办法
323
查看次数

如何从 awk $NF 列中删除 CRLF

我不知道如何表述这个问题,因为大多数答案都是关于\r\n从文件中删除的。

我有一个独特的问题,压缩文件是随机编号的,为了将它们与数据库记录正确关联,我需要列出文件内容并检查它们。

我正在使用此解决方案 “在 bash 脚本中,如何逐行捕获标准输出”

这是一个很好的开始。

某些内容的名称带有空格,我找到了这个解决方案: 如何将第三列打印到最后一列?

我在尝试更新数据库记录时发现,它^M被插入到awk管道的结果中,但仅限于NF列。

不知道如何解决这个特殊的故障。我没有看到^M插入的位置,或者如何从最后一列中删除它。

我的代码

如果我剥离,这条线工作正常 ^M

filename="$(echo "$line" | awk '{if ($3 ~ /^M$/) {sub(/^M$/,"", $3)} printf $3; printf ""}')"
Run Code Online (Sandbox Code Playgroud)

此行失败:

text="$(echo "$line" | awk '{for(i=6;i<NF+1;i++) {if ($i ~ /^M$/) {sub(/^M$/,"", $i)} } printf "%s ", $i; printf ""}')"
Run Code Online (Sandbox Code Playgroud)

简化版失败了:

text="$(echo "$line" | awk '{for(i=6;i<NF+1;i++) sub(/^M$/,"", $i) printf "%s ", $i; printf ""}')"
Run Code Online (Sandbox Code Playgroud)

vim/vi ^Mctrl-V + <return …

bash awk shell-script

1
推荐指数
1
解决办法
1638
查看次数

标签 统计

awk ×2

bash ×2

quoting ×1

shell-script ×1

variable ×1