小编Mic*_*ael的帖子

用命令结果替换列

我正在尝试找到一种方法,用命令的输出快速有效地替换文件中每一行的列值。我需要每天处理大约 500,000 行的多个文件,所以我正在寻找可以尽快完成任务的东西。

我需要将逗号分隔行的第八列作为输入,运行命令,然后用命令的输出替换该列。

这是我已经尝试过的,虽然它有效,但速度非常慢:

awk -F "," 'NR > 1 {
    cmd = "cdrtoip " $8
    cmd | getline ip
    close(cmd)
    $8=ip
    print
}' $1.csv >> $1.csv.tmp
Run Code Online (Sandbox Code Playgroud)

我更愿意坚持使用 Bash 或其他可以在 Linux 服务器上预安装的 Linux 程序。

编辑:抱歉,我应该包括 cdrtoip 是什么。

# Convert CISCO format (signed integer) to Hex
# Capitalize or else conversion from hex to decimal doesn't work later
HEXIP=$(printf '%x\n' $1 | tr '[:lower:]' '[:upper:]')

# Negative numbers will get 8 'f' in front of them
# Trim that part …
Run Code Online (Sandbox Code Playgroud)

shell bash sed awk

7
推荐指数
2
解决办法
1383
查看次数

标签 统计

awk ×1

bash ×1

sed ×1

shell ×1