我使用以下AWK
代码行替换了逗号分隔文件中所有出现的7833,其中包含100到400之间的随机整数。
awk -F \, 'BEGIN { OFS = FS } $NF == 7833 { $NF = int(rand() * 300 + 100) } 1' ./OldFile.txt > ./NewFile.txt
这完全有效但现在我想用以下命令中的随机字符串替换7833。
cat /dev/urandom | tr -cd 'A-Z0-9' | head -c 10
我尝试使用以下命令,但它无效。
awk -F \, 'BEGIN { OFS = FS } $NF == 7833 { $NF = `cat /dev/urandom | tr -cd 'A-Z0-9' | head -c 10` } 1' ./OldFile.txt > ./NewFile.txt
你能帮忙吗?
提前致谢。
答案 0 :(得分:0)
来自AWK手册页:
system(cmd)
executes cmd and returns its exit status
GNU AWK手册还有一个部分,它描述了系统功能并提供了一个例子:
system("date | mail -s 'awk run done' root")
现在你应该使用这样的东西:
awk -F \, 'BEGIN { OFS = FS } $NF == 7833 { $NF = system("cat /dev/urandom | tr -cd 'A-Z0-9' | head -c 10") } 1' ./OldFile.txt > ./NewFile.txt