在玩的时候awk我来执行:
ls -la >> a.txt ; awk {'print $5 $1'} a.txt ;
Run Code Online (Sandbox Code Playgroud)
这给出了如下输出:
53277-rw-------
52347-rw-------
Run Code Online (Sandbox Code Playgroud)
我怎样才能在这两个输出朋友之间留一个空格?
猫文件1
foo
ice
two
Run Code Online (Sandbox Code Playgroud)
猫文件2
bar
cream
hundred
Run Code Online (Sandbox Code Playgroud)
期望的输出:
foobar
icecream
twohundred
Run Code Online (Sandbox Code Playgroud)
在我的场景中,file1 和 file2 将始终具有相同数量的行,以防事情变得更容易。
example.txt 在下面
Restaurant: McDonalds
City: Miami
State: Florida
Address: 123 Biscayne Blvd
Phone: 911
Restaurant: 5 guys
City: Atlanta
State: Georgia
Address: 123 Peachtree Rd
Phone: 911
Restaurant: KFC
City: NYC
State: NY
Address: 123 Madison Square
Phone: 911
Run Code Online (Sandbox Code Playgroud)
我使用 bash 脚本,假设我想从上面的文件中按名称搜索餐厅。询问用户输入餐厅名称,它应该打印有关该餐厅的信息(5 行)。
awk '/McDonalds/> /KFC/' example.txt
Run Code Online (Sandbox Code Playgroud)
我知道上面的代码行将打印与模式“麦当劳”和“肯德基”匹配的整行,但这只会打印文本文件中的第一行,而不是有关该餐厅的其余信息。我如何告诉它仅从用户输入的餐厅名称中打印所有信息(5 行)?
我有“test1.csv”,它包含
200,400,600,800
100,300,500,700
50,25,125,310
Run Code Online (Sandbox Code Playgroud)
和 test2.csv ,它包含
100,4,2,1,7
200,400,600,800
21,22,23,24,25
50,25,125,310
50,25,700,5
Run Code Online (Sandbox Code Playgroud)
现在
diff test2.csv test1.csv > result.csv
Run Code Online (Sandbox Code Playgroud)
不同于
diff test1.csv test2.csv > result.csv
Run Code Online (Sandbox Code Playgroud)
我不知道哪个是正确的顺序,但我想要别的东西,上面的两个命令都会输出类似的东西
2 > 100,4,2,1,7
3 2,3c3,5
4 < 100,300,500,700
5 < 50,25,125,310
6 \ No newline at end of file
7 ---
8 > 21,22,23,24,25
9 > 50,25,125,310
Run Code Online (Sandbox Code Playgroud)
我只想输出差异,因此 results.csv 应该是这样的
100,300,500,700
100,4,2,1,7
21,22,23,24,25
50,25,700,5
Run Code Online (Sandbox Code Playgroud)
我试过了diff -q,diff -s但他们没有成功。顺序无关紧要,重要的是我只想看到差异,没有 > 也没有 < 也没有空格。
grep -FvF 在较小的文件上而不是在大文件上做了技巧
第一个文件包含超过 500 万行,第二个文件包含 1300。
所以 results.csv 应该导致 …
我的filename文件内容如下(例如):
My block of line starts from here
START
First line
second line
third line
END
and end to here for example.
Run Code Online (Sandbox Code Playgroud)
我想,以取代之间的行块START,并END只用一个词,例如用SINGLEWORD。像下面这样:
My block of line starts from here
SINGLEWORD
and end to here for example.
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令找到我的行块:
grep -Pzo "START(.|\n)*END" filename
Run Code Online (Sandbox Code Playgroud)
运行上述命令的结果将是这样的:
START
First line
second line
third line
END
Run Code Online (Sandbox Code Playgroud)
然后我使用此命令将所有行合并为一行:
LAST_RESULT | sed -e :a -e '/$/N; s/\n/ /; ta'
Run Code Online (Sandbox Code Playgroud)
然后我会得到这个结果:
START First line second line third line END
Run Code Online (Sandbox Code Playgroud)
通过我的最后一个命令, …
有没有办法删除以某些字符串开头的行。
我有这个 youtube-dl 代码
youtube-dl --extract-audio --audio-quality 0 --newline --audio-format mp3 https://www.youtube.com/playlist?list=PL1C815DB73EC2678E
Run Code Online (Sandbox Code Playgroud)
它的结果是这样的
[youtube:playlist] PL1C815DB73EC2678E: Downloading webpage
[download] Downloading playlist: Less than 1 minute
[youtube:playlist] playlist Less than 1 minute: Collected 4 video ids (downloading 4 of them)
[download] Downloading video 1 of 4
[youtube] KNLwsqzFfNg: Downloading webpage
[youtube] KNLwsqzFfNg: Extracting video information
[youtube] KNLwsqzFfNg: Downloading DASH manifest
[download] Destination: _1 min. - Amendes pour les particules du LHC-KNLwsqzFfNg.m4a
[download] 0.4% of 231.51KiB at 6.10KiB/s ETA 00:30
[download] 1.1% of …Run Code Online (Sandbox Code Playgroud) 我有一个字符串
00:28:04 /usr/lib/jvm/jre/bin/java -DJDBC_CONNECTION_STRING= -Dspring.profiles.active=qa -XX:MaxPermSize=256
Run Code Online (Sandbox Code Playgroud)
并要提取的词qa后面-Dspring.profiles.active。
我将字符串保存在一个文件 text.txt 中,只是为了演示它。
当我做
grep -r -o "spring.profiles.active=" text.txt
Run Code Online (Sandbox Code Playgroud)
结果是 spring.profiles.active=
这个词并不总是qa,它可能是prod或dev。
我想做的是找到这个词spring.profiles.active,然后在=提取那个词之后。
我想为此编写 shell 脚本,因为我使用这个词来配置服务器上的其他项目。
这可能吗,如果可以,我该怎么做。
我知道使用 grep 我可以使用字段-A并-B从匹配中提取上一行和下一行。
但是,他们根据指定的行数在匹配之间拉入所有行。
grep -r -i -B 5 -A 5 "match"
Run Code Online (Sandbox Code Playgroud)
我想只收到5次在比赛之前线和5日线的比赛,除了匹配的行之后,并没有得到之间的界线。
有没有办法做到这一点grep?
我有一个命令:
$ awk '{ print length($0); }' /etc/passwd
Run Code Online (Sandbox Code Playgroud)
它打印passwd文件中每一行的字符数:
52
52
61
48
81
58
etc.
Run Code Online (Sandbox Code Playgroud)
如何仅打印前 n 行的字符数?
例如 - 对于前 3 行,它会给出如下内容:
52
52
61
Run Code Online (Sandbox Code Playgroud)