标签: line

如何从文件的开头和结尾删除空行?

我想从文件的开头和结尾删除空行,但不删除中间非空行之间的空行。我认为sedawk将是解决方案。

来源:

1:
2:
3:line1
4:
5:line2
6:
7:
8:
Run Code Online (Sandbox Code Playgroud)

输出:

1:line1
2:
3:line2
Run Code Online (Sandbox Code Playgroud)

sed awk text-processing line

20
推荐指数
4
解决办法
8898
查看次数

如何在vim中制作连续的垂直线?

我想在 vim 中制作一张桌子。

制作水平线很容易

______________________________ 
Run Code Online (Sandbox Code Playgroud)

对于垂直我使用这个

yes "|" | head -10
Run Code Online (Sandbox Code Playgroud)

但结果很糟糕

|
|
|
|
|
|
|
|
|
Run Code Online (Sandbox Code Playgroud)

我想要像水平线这样连续的东西。我怎样才能做到这一点?

vim line

13
推荐指数
1
解决办法
2645
查看次数

检查命令行参数

我想检查第一个命令行参数 ( $1) 是否至少有 10 个字符,以及它是否为空。

该脚本被称为:

./myscript.sh 2018-08-14
Run Code Online (Sandbox Code Playgroud)

我试过这个,但它不起作用

timestamp="$1"

# check if command line argument is empty or not present
if [ "$1" == "" ] || [ $# -gt 1 ]; then
        echo "Parameter 1 is empty"
        exit 0
elif [! "${#timestamp}" -gt 10 ]; then
        echo "Please enter at least a valid date"
        echo "Example: 2018-08-14"
        exit 0
else
        echo "THIS IS THE VALID BLOCK"
fi
Run Code Online (Sandbox Code Playgroud)

shell bash command line

12
推荐指数
2
解决办法
6万
查看次数

Find 命令帮助:在 Linux 上查找以空格(或多个空格)开头的文件或文件夹

如何搜索以下任意内容:

在 Linux 上查找以空格开头的文件夹,然后删除所有起始空格,以便该文件夹可以以字母或数字开头?

在 Linux 上查找以空格开头的文件,然后删除所有开头空格,以便文件可以以字母或数字开头?

linux find command line

5
推荐指数
1
解决办法
807
查看次数

有没有办法计算文件中的文本行数,包括非分隔行?

POSIXwc命令计算文件中有多少 POSIX 行。POSIX 标准将一行定义为带有后缀的文本字符串\n。没有\n,纯文本字符串不能称为一行。

但对我来说,计算文件中有多少行文本字符串更自然。有没有简单的方法来做到这一点?

root:[~]# printf "aa\nbb" | wc -l
1
root:[~]# printf "aa\nbb\n" | wc -l
2
root:[~]#
Run Code Online (Sandbox Code Playgroud)

newlines wc line

4
推荐指数
1
解决办法
411
查看次数

sed:在匹配前删除所有行,包括这一行

目标

如何在匹配行之前删除文本文件中的所有行,包括这一行?

输入文件示例:

apple
pear
banana
HI_THERE
lemon
coconut
orange
Run Code Online (Sandbox Code Playgroud)

期望的输出:

lemon
coconut
orange
Run Code Online (Sandbox Code Playgroud)

目的是在 sed 中使用“-i”选项(直接编辑)。

清洁解决方案?

类似问题的大多数答案都提出了类似的建议:

sed -n '/HI_THERE/,$p' input_file
Run Code Online (Sandbox Code Playgroud)

但匹配的行不会被删除:

HI_THERE
lemon
coconut
orange
Run Code Online (Sandbox Code Playgroud)

然后,知道这将删除匹配行(包括它)到文件末尾的所有内容:

sed '/HI_THERE/,$d' input_file
Run Code Online (Sandbox Code Playgroud)

我试过这样的事情:

sed '^,/HI_THERE/d' input_file
Run Code Online (Sandbox Code Playgroud)

但随后 sed 抱怨:

sed: -e expression #1, char 1: unknown command: `^'
Run Code Online (Sandbox Code Playgroud)

肮脏的解决方案

最后一个(脏)解决方案是使用管道:

sed -n '/HI_THERE/,$p' input_file | tail -n +2
Run Code Online (Sandbox Code Playgroud)

但是,直接编辑文件不起作用:

sed -n '/HI_THERE/,$p' input_file | tail -n +2 > input_file
cat input_file # returns nothing
Run Code Online (Sandbox Code Playgroud)

并且必须使用这样的临时文件...

sed -n '/HI_THERE/,$p' input_file | …
Run Code Online (Sandbox Code Playgroud)

sed files text delete line

3
推荐指数
1
解决办法
2522
查看次数

用awk逐行读取文件以替换某些行号中的字符

我在这里得到了这个脚本。它应该通过逐行读取文件 LineNumbers.file(每个都包含一个行号)来运行循环,然后相应地用 ./ 替换 0/0。在 BEFORE_File.txt 中。它可以工作,但它只需要文件 LineNumbers.file 的最后一行,而不是 >100 个条目。

我不确定我在这里做错了什么。你能帮我让 awk 逐行读取 LineNumbers.file 吗?

我已经可以使用它了sed -i "${line}s/0\/0/\.\/\./" "${myFileTmp}",但是在我拥有的 >3GB 大文件上它真的很慢。所以我认为 awk 将是一个更快的选择。

非常感谢!

cat ./LineNumbers_TEMP/LineNumbers.file | while read line
do
myFileTmp=BEFORE_File.txt
awk -v var=${line} 'FNR==var { sub(/0\/0/, "\.\/\."); print }' "${myFileTmp}" > AFTER_File.txt
done
Run Code Online (Sandbox Code Playgroud)

例如,这是文件的样子:

cat ./LineNumbers_TEMP/LineNumbers.file
1
2
5
Run Code Online (Sandbox Code Playgroud)

脚本前的文件.txt:

cat BEFORE_File.txt
0/0
0/0
0/1
0/1
0/0
0/0
0/0
Run Code Online (Sandbox Code Playgroud)

这是运行脚本后文件的外观:

cat AFTER_File.txt
./.
./.
0/1
0/1
./.
0/0
0/0
Run Code Online (Sandbox Code Playgroud)

目前我只得到这个:

./.
Run Code Online (Sandbox Code Playgroud)

awk line

2
推荐指数
2
解决办法
2005
查看次数

如何使用 diff -y 使文本换行?

当我用来diff -y比较两个具有长行文本的文本文件时,结果会截断每一列,并且我无法读取整行。我希望文本能够换行(或折叠,也称为折叠),以便我可以阅读整行。

例如,假设我有两个简单的文本文件,每行一行:

cat tmp.txt tmp2.txt
The quick brown fox jumped over the lazy dog. This line is very long and will not show when I use a diff. 
The quick brown fox did not jump over the lazy dog. This line is very long and will not show when I use a diff. 
Run Code Online (Sandbox Code Playgroud)

diff我得到了他们,

diff -y tmp.txt tmp2.txt
The quick brown fox jumped over the lazy dog. This line is ve | The quick brown fox …
Run Code Online (Sandbox Code Playgroud)

linux diff command line

1
推荐指数
1
解决办法
3024
查看次数

由于回车,Windows 上的文本文件比 Linux 上的文本文件大吗?

假设我在 Linux 和 Windows 上有相同的 ASCII 文本文件:

one
two
three
Run Code Online (Sandbox Code Playgroud)

这两个文件在两个操作系统上将分别具有\n\r\n作为 EOL 字符。

这是否意味着Linux上的文件更小?

这个在 linux 上执行的测试似乎是肯定的:

$ echo -en 'one\ntwo\nthree\n' | wc --bytes 
14
$ echo -en 'one\r\ntwo\r\nthree\r\n' | wc --bytes 
17
Run Code Online (Sandbox Code Playgroud)

linux size windows newlines line

-1
推荐指数
1
解决办法
305
查看次数

标签 统计

line ×9

command ×3

linux ×3

awk ×2

newlines ×2

sed ×2

bash ×1

delete ×1

diff ×1

files ×1

find ×1

shell ×1

size ×1

text ×1

text-processing ×1

vim ×1

wc ×1

windows ×1