Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止bash for循环转换字符串数据_Bash_Awk_Grep - Fatal编程技术网

如何防止bash for循环转换字符串数据

如何防止bash for循环转换字符串数据,bash,awk,grep,Bash,Awk,Grep,我想从邮件日志中筛选出日期戳并删除所有事件: (基本上,这是usb历史清理器脚本的一部分,添加head-n1只是为了测试) 运行此命令时: egrep usb /var/log/messages | awk -F"$delimiter" '{print $1}' | uniq | head -n1 输出良好: Mar 31 03:25:03 但当它返回到for循环时,数据传输是这样的,因为空间: Mar 31 03:25:03 问题是:我如何防止这种行为?而不是: for item in

我想从邮件日志中筛选出日期戳并删除所有事件: (基本上,这是usb历史清理器脚本的一部分,添加head-n1只是为了测试)

运行此命令时:

egrep usb /var/log/messages | awk -F"$delimiter" '{print $1}' | uniq | head -n1
输出良好:

Mar 31 03:25:03
但当它返回到for循环时,数据传输是这样的,因为空间:

Mar
31
03:25:03
问题是:我如何防止这种行为?

而不是:

for item in `whatever`; do
echo ${item}
done
使用:

但你的整个剧本可以改写为:

awk -F"${HOSTNAME%%.*}" '/usb/ && !seen[$1]++ {print $1}' /var/log/messages
whatever |
while IFS= read -r item; do
echo "${item}"
done
awk -F"${HOSTNAME%%.*}" '/usb/ && !seen[$1]++ {print $1}' /var/log/messages