[英]Unix :: AWK removed unexpectedly first line
我创建了一个脚本来从网站中提取一些链接。 我的脚本通过提取管道后的最新文本将 'é' 替换为 'e'。 但是在执行它时,它会去掉第一行
#!/bin/bash
input="links"
while IFS= read -r line
do
awk -F "/" ' { print $6} ' | iconv -f utf8 -t ascii//TRANSLIT//IGNORE > output_downloads.txt
done < "$input"
文件链接
https://DOMAIN.tv/video/9462/sortilégio-capitulo-1
https://DOMAIN.tv/video/9463/sortilégio-capitulo-2
头部 output_downloads.txt
sortilegio-capitulo-2
sortilegio-capitulo-3
sortilegio-capitulo-4
sortilegio-capitulo-5
我不明白为什么 - 考虑到源文件中的所有行都是相似的。 有什么想法吗?
其他问题:
printf "%04d\n
但只有在格式仅为数字时才有效。
请问有什么想法吗?
谢谢 !!
完全去掉while read
循环。 该循环一次一行地将内容读入 shell 。
但是,在您的使用模式下, read
only 运行一次,使用第一行并将其存储在$line
; 所有其他行仍然可供 awk 读取——因此,当 awk 运行一次该循环时,读取所有其他行,将第 6 列写入其标准输出,然后iconv
读取。 当while read
循环再次评估其条件时, read
失败(因为awk
读取了所有可用的输入并且没有任何剩余),因此循环退出。
因为第一行被read line
消耗, awk
无法看到它——这就是它永远不会出现在你的输出中的原因。
awk -F "/" ' { print $6} ' <"$input" \
| iconv -f utf8 -t ascii//TRANSLIT//IGNORE \
> output_downloads.txt
你的 awk 单独工作:
#!/bin/bash
awk -F "/" ' { print $NF} ' links | iconv -f utf8 -t ascii//TRANSLIT//IGNORE > output_downloads.txt
您可以使用 $NF 而不是 $6
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.