【发布时间】:2014-04-06 08:15:57
【问题描述】:
如何使用 awk 替换文件中所有行的前 100 个字符?此文件中没有字段分隔符。所有字段都是固定宽度。鉴于数据的变化,我无法使用搜索和替换。
【问题讨论】:
-
没用。 -r 标志在我的版本中是非法的。 sed 's/.{46}/" "/' with855st
如何使用 awk 替换文件中所有行的前 100 个字符?此文件中没有字段分隔符。所有字段都是固定宽度。鉴于数据的变化,我无法使用搜索和替换。
【问题讨论】:
sed 怎么样?用 A 替换前 100 个字符:
$ sed -r 's/.{100}/A/' file
如果您对结果满意,请使用 -i 重写文件:
$ sed -ri 's/.{100}/A/' file
【讨论】:
sed 's/.\{100\}/replacement text/'
awk '{print "replacing text..." substr($0,100)}'
【讨论】:
$11? @Sigismundo 使用了$0
使用纯外壳。
#!/usr/bin/env bash
# read each line into shell variable REPLY
while read -r ; do
echo "REPLACE text ... ${REPLY:100}"
done <file
REPLY 是 shell 变量,参考 http://www.gnu.org/software/bash/manual/html_node/Bash-Variables.html。 Set to the line of input read by the read builtin command when no arguments are supplied
${REPLY:100} - 获取 100 个字符后的字符串。【讨论】:
REPLY 变量。虽然您不是在数组中读取。您正在阅读默认变量中的整行。没有?