bash - 删除 txt 文件的前 n 行时,Bash 在行首附加空格
问题描述
观察结果
在编写从文件中删除变量 nrn
行的函数时,输出文件在每行的第一个位置(第一行之后)有一个额外的空间。
例如:
some text
another text
third text
fourth text
fifth text
去:
third text
fourth text
fifth text
删除第一n=2
行后。
预期结果
本质上,我打算/期望不添加这些额外的空间:
third text
fourth text
fifth text
代码
执行删除的功能包括:
#!/bin/bash
apt_update() {
source src/hardcoded_variables.txt
# copy target file
cp $INPUT_PATH $REMAINING_LINES_IN_TARGET_AFTER_STARTING_LINE
# get starting line number
starting_line=$(<$STARTING_LINE_QUERY_VAR_PATH)
# remove first starting_line lines from the copied target file
echo -n $(sed "1,${starting_line}d" $REMAINING_LINES_IN_TARGET_AFTER_STARTING_LINE) > $REMAINING_LINES_IN_TARGET_AFTER_STARTING_LINE
}
apt_update "$@"
问题
如何防止在输出文件的第一行之后的每行开头添加空格?
解决方案
答案是由肖恩作为评论给出的,我使用了一种sed
导致错误的复杂方法。此外,我首先制作了一个文件的副本,并尝试应用sed
到同一个文件。当我第一次制作副本,然后从原始文件传输到复制文件时,目标文件按预期填充。因此,找到了一个可行的解决方案:
#!/bin/bash
apt_update() {
source src/hardcoded_variables.txt
# copy target file
cp $INPUT_PATH $REMAINING_LINES_IN_TARGET_AFTER_STARTING_LINE
# get starting line number
starting_line=$(<$STARTING_LINE_QUERY_VAR_PATH)
# remove first starting_line lines from the copied target file
sed "1,${starting_line}d" $INPUT_PATH > $REMAINING_LINES_IN_TARGET_AFTER_STARTING_LINE
}
apt_update "$@"
sed
在应用此解决方案之前,我确实需要制作目标副本。
推荐阅读
- sql - 用其他表中的值替换选择值
- mobile-application - 通知用户有移动应用程序的原生方式?
- r - 获取具有两个变量和多个行名的 p 值
- algorithm - 非随机访问结构中二进制搜索的复杂性
- python - 修改包含 nan 的 pandas 列的值
- php - php文件被识别但没有输入
- swift - 两个 ios 设备之间的后台扫描和广告
- amazon-web-services - 如何添加 EMR Spark 步骤?
- reactjs - React Typescript - 将道具传递给 Hooks 之间的类型错误
- python - 如何在 django 模板中使用大于运算符